获取音频文件时长 HarmonyOS 鸿蒙Next
获取音频文件时长 HarmonyOS 鸿蒙Next
let avPlayer = await media.createAVPlayer()
let f = fileIo.openSync(path, fileIo.OpenMode.READ_WRITE);
let stat = fileIo.statSync(f.fd);
let avf: media.AVFileDescriptor = { fd: f.fd, offset: 0, length: stat.size };
avPlayer.fdSrc = avf;
let duration = avPlayer.duration
avPlayer.stop()
avPlayer.release()
return duration
获取到的时长是-1,要如何获取真实的时长呢
更多关于获取音频文件时长 HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V14/using-avplayer-for-playback-V14#完整示例
将下面代码放到setAVPlayerCallback函数里获取
// 监听歌曲时长
avPlayer.on('durationUpdate', (duration: number) => {
})
更多关于获取音频文件时长 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,获取音频文件时长可以通过MediaMetadataRetriever
类实现。该类提供了获取音频文件元数据的方法,包括时长、比特率、采样率等。以下是一个简单的示例代码:
import media from '@ohos.multimedia.media';
let mediaMetadataRetriever = new media.MediaMetadataRetriever();
let filePath = 'path/to/your/audio/file.mp3';
mediaMetadataRetriever.setSource(filePath, (err) => {
if (err) {
console.error('Failed to set source:', err);
return;
}
mediaMetadataRetriever.extractMetadata(media.MediaMetadataKey.DURATION, (err, duration) => {
if (err) {
console.error('Failed to extract metadata:', err);
return;
}
console.log('Audio duration:', duration);
});
});
在这段代码中,首先创建了一个MediaMetadataRetriever
实例,然后通过setSource
方法设置音频文件路径。接着,使用extractMetadata
方法获取音频文件的时长,时长以毫秒为单位返回。
注意:确保在config.json
中声明了ohos.permission.READ_MEDIA
权限,以便访问音频文件。