鸿蒙Next开发中如何获取音频时长
在鸿蒙Next开发中,如何通过代码获取音频文件的总时长?需要调用哪个API或方法?能否提供一个具体的示例代码?
2 回复
在鸿蒙Next里,获取音频时长就像问一首歌:“你多长?”用AVMetadataHelper的getDuration()方法,它就会乖乖告诉你时长(单位:毫秒)。记得先加载音频文件哦!
更多关于鸿蒙Next开发中如何获取音频时长的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next开发中,获取音频时长可以通过AVPlayer或AVMetadataExtractor实现。以下是两种方法的示例:
方法一:使用AVPlayer获取音频时长
import media from '@ohos.multimedia.media';
// 创建AVPlayer实例
let avPlayer: media.AVPlayer = await media.createAVPlayer();
// 设置音频源(例如本地文件路径)
avPlayer.url = 'file:///data/storage/el2/base/haps/entry/files/audio.mp3';
// 监听准备完成事件
avPlayer.on('stateChange', async (state: string) => {
if (state === 'prepared') {
// 获取音频时长(单位:毫秒)
let duration = avPlayer.duration;
console.log(`音频时长:${duration} ms`);
// 使用后释放资源
avPlayer.release();
}
});
// 开始准备
avPlayer.prepare();
方法二:使用AVMetadataExtractor获取元数据
import media from '@ohos.multimedia.media';
let metadataExtractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor();
metadataExtractor.url = 'file:///path/to/audio.mp3';
// 获取元数据
let metadata: media.AVMetadata = await metadataExtractor.fetchMetadata();
let duration = metadata.duration; // 单位:毫秒
console.log(`音频时长:${duration} ms`);
// 释放资源
metadataExtractor.release();
注意事项:
- 需要申请
ohos.permission.READ_MEDIA权限 - 文件路径需使用正确的URI格式
- 使用完成后务必调用
release()释放资源 - 时长单位为毫秒,可自行转换为秒或其他单位
推荐使用AVMetadataExtractor,因为它更轻量且专门用于获取元数据。

