HarmonyOS鸿蒙Next中AVPlayer如何从音频中间起播?

HarmonyOS鸿蒙Next中AVPlayer如何从音频中间起播? 比如有一个 30 分钟的音频,需要从第 10 分钟起播。

注意不是 seek,是播放就从 10 分钟开始。

3 回复

系统的AVPlayer播放逻辑是从头开始,目前推荐使用seek方式来实现跳转到指定时间点播放,系统暂未提供其他方式。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/_a_v_player-V5#avplayerseekmode

更多关于HarmonyOS鸿蒙Next中AVPlayer如何从音频中间起播?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用AVPlayer从音频中间起播可以通过设置播放器的seekTo方法来实现。seekTo方法允许你指定一个具体的时间点,播放器将从该时间点开始播放音频。以下是实现步骤:

  1. 初始化AVPlayer:首先,创建并初始化AVPlayer实例,设置音频源。

    let avPlayer = new media.AVPlayer();
    avPlayer.url = 'path/to/your/audio/file.mp3';
    
  2. 准备播放器:调用prepare方法,准备播放器。

    avPlayer.prepare();
    
  3. 设置起播时间点:使用seekTo方法,指定从音频的哪个时间点开始播放。时间单位为毫秒。

    let startTime = 30000; // 从30秒开始播放
    avPlayer.seekTo(startTime, media.SeekMode.ACCURATE);
    
  4. 开始播放:调用play方法,开始播放音频。

    avPlayer.play();
    
  5. 监听状态变化:可以通过监听stateChange事件来处理播放器的状态变化,确保在合适的时机执行起播操作。

    avPlayer.on('stateChange', (state) => {
        if (state === 'prepared') {
            avPlayer.seekTo(startTime, media.SeekMode.ACCURATE);
            avPlayer.play();
        }
    });
    

通过以上步骤,你可以在HarmonyOS鸿蒙Next中实现从音频中间起播的功能。

在HarmonyOS鸿蒙Next中,AVPlayer可以通过设置seekTo方法从音频中间起播。具体步骤如下:

  1. 初始化AVPlayer:创建并配置AVPlayer实例。
  2. 准备播放:调用prepare()方法准备音频资源。
  3. 定位播放位置:使用seekTo(int time, int mode)方法,将time设置为目标时间(毫秒),mode设置为AVPlayer.SEEK_PRECISE以精确定位。
  4. 开始播放:调用play()方法从指定位置开始播放。

示例代码:

AVPlayer avPlayer = new AVPlayer(context);
avPlayer.setSource(new AVFileDescriptorSource(fileDescriptor));
avPlayer.prepare();
avPlayer.seekTo(5000, AVPlayer.SEEK_PRECISE); // 从5秒处开始
avPlayer.play();
回到顶部