HarmonyOS 鸿蒙Next获取音文件的时长

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

HarmonyOS 鸿蒙Next获取音文件的时长 怎么获取音文件的时长?

3 回复
async testFetchMetadataFromFdSrcByPromise(fileUri: string) {
// fileUri 音频文件地址
  let avMetadataExtractor: media.AVMetadataExtractor = await media.createAVMetadataExtractor()
  let resFile = fs.openSync(fileUri, fs.OpenMode.READ_ONLY)
  let fileLength = fs.statSync(resFile.fd).size
  avMetadataExtractor.fdSrc = { fd: resFile.fd, offset: 0, length: fileLength }
  try {
    // 获取元数据(promise模式)
    let metadata = await avMetadataExtractor.fetchMetadata()
    console.log("元数据", JSON.stringify(metadata))
    let duration = Math.floor(Number(metadata.duration) / 1000)
    console.log("音频总时长", duration)
  } catch (error) {
    console.error('get meta datafailed with err: ' + JSON.stringify(error));
  }
  // 释放资源(promise模式)
  avMetadataExtractor.release()
  console.info('TAG', `release success.`)
}

更多关于HarmonyOS 鸿蒙Next获取音文件的时长的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以通过使用avPlayer 的getDurationTime() 获取音频的总时长.


大致步骤,

  1. 用音频文件创建avplayer的实例(avplayer 用于播放音频)

  2. avplayer 创建好好可以通过实例的getDurationTime() 获取音频的总时长


详细参考(不同的音频文件源, 创建avplayer实例的例子):

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/using-avplayer-for-playback-V5#示例代码

在HarmonyOS(鸿蒙)系统中,获取音频文件的时长通常涉及到对音频文件的解析和处理。鸿蒙系统提供了一系列的多媒体API,可以用来实现这一功能。以下是如何获取音频文件时长的基本步骤:

  1. 加载音频文件: 使用鸿蒙的多媒体框架加载音频文件。这通常涉及到指定音频文件的路径或使用URI。

  2. 获取音频文件的元数据: 加载音频文件后,通过相应的API获取其元数据。元数据中包含了音频文件的各种信息,如时长、采样率、比特率等。

  3. 读取时长信息: 从获取的元数据中提取音频文件的时长信息。在鸿蒙的API中,时长通常是以毫秒或秒为单位提供的。

  4. 处理时长信息: 根据需要将时长信息转换为所需的格式,例如从毫秒转换为分钟和秒。

示例代码(伪代码):

// 假设有一个加载和解析音频文件的函数loadAudioFile
AudioFile audioFile = loadAudioFile("path/to/audiofile.mp3");

// 获取元数据
AudioMetadata metadata = audioFile.getMetadata();

// 读取时长信息(假设时长是以毫秒为单位的)
long durationInMs = metadata.getDurationInMs();

// 转换为秒或其他格式(如果需要)
long durationInSeconds = durationInMs / 1000;

请注意,上述代码是伪代码,用于说明流程。实际实现时,需参考鸿蒙系统的多媒体开发文档和API。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部