HarmonyOS 鸿蒙Next如何获取音频的时长?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

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。

回到顶部