获取音频文件时长 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权限,以便访问音频文件。

回到顶部