HarmonyOS 鸿蒙Next如何获取音频的时长?
HarmonyOS 鸿蒙Next如何获取音频的时长?
我有一个音频文件,知道音频文件的路径,现在需要获取音频文件的时长,请问该怎么获取呢?
4 回复
首先感谢答复。我试过了,不知道为啥,我获取到的信息是undefined的。不过我找到了另一种稍微简便的方法。 try {
let fd = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE).fd;
let state = fs.statSync(fd)
let avFileDescriptor: media.AVFileDescriptor = { fd:fd, offset: 0, length: state.size };
// 创建AVMetadataExtractor对象
let avMetadataExtractor = await media.createAVMetadataExtractor()
avMetadataExtractor.fdSrc = avFileDescriptor
// 获取元数据(promise模式)
await avMetadataExtractor.fetchMetadata().then((result) => {
Log.info(`音频信息 get meta data: ${JSON.stringify(result)}`)
})
//
// // 获取专辑封面(promise模式)
// let pixelMap = await avMetadataExtractor.fetchAlbumCover()
// Log.info(`音频信息 get meta data, pixelMap: ${JSON.stringify(pixelMap)}`)
// 释放资源(promise模式)
fs.close(fd)
avMetadataExtractor.release()
} catch (e) {
Log.info("异常:" +e)
}
有些音频的duration是undefined ?
HarmonyOS 鸿蒙Next获取音频时长的方法通常涉及解析音频文件的元数据。你可以使用HarmonyOS提供的AVMetadataExtractor接口来提取音频的时长信息。首先,你需要创建AVMetadataExtractor对象,并设置音频文件的描述符。然后,调用fetchMetadata方法异步获取元数据,其中包含音频时长。如果成功,你可以从返回的元数据结果中提取时长信息。如果问题依旧没法解决请加我微信,我的微信是itying888。