更新时间:2023-10-26 GMT+08:00
分享

播放音乐

功能描述

混音是将音乐文件和麦克风音频混合,一般用于播放时长较长的背景音乐或者伴奏。同一时间只能播放一个音乐文件。可以在本地播放,也可以同时播放给其他与会者听。

支持播放wav、pcm和单声道mp3音频文件。可以播放本地或在线音乐文件。

接口调用步骤

实现过程

  1. 加入房间

    参考接口调用步骤中加入房间的时序图步骤加入房间。

  2. 播放音乐文件

    调用startAudioFile接口可以播放一个音乐文件。同一时刻只能播放一个音乐文件。

    engine->startAudioFile("D:\\test.mp3", true, 1, false, 0);
  3. 设置音乐文件音量

    音乐文件播放过程中,可以调用adjustAudioFileVolume设置音乐文件播放音量。

    engine->adjustAudioFileVolume(50);
  4. 获取音乐文件总时长和播放位置

    音乐文件打开成功后,Sdk会触发一次onAudioMixStateChangedNotify回调,传入state参数为HRTC_AUDIO_FILE_OPEN_COMPLETED,此时可以调用getAudioFileDuration获取音乐文件总时长,可用以刷新界面进度条的总时长。

    音乐文件在播放过程中,Sdk每秒会触发一次onAudioMixStateChangedNotify回调,其中的state参数为HRTC_AUDIO_FILE_POSITION_UPDATE,value参数就是当前的音乐文件播放进度,以毫秒为单位,可以在此回调中刷新界面的播放进度条。

    播放过程中也可以调用getAudioFilePosition获取音乐文件当前播放位置,可用于刷新界面的播放进度条。示例代码如下:

    void HWEngineEventHandler::onAudioMixStateChangedNotify(HRTCAudioFileState state, HRTCAudioFileReason reason, unsigned long long value)
    {
    switch (reason) {
    case HRTC_AUDIO_FILE_REASON_NONE:
    {
    switch (state) {
    case HRTC_AUDIO_FILE_OPEN_COMPLETED:
    {
    //获取总时长,并刷新到进度条
    int mixDuration = engine->getAudioFileDuration();
    break;
    
    }
    case HRTC_AUDIO_FILE_POSITION_UPDATE:
    {
    //使用value参数值刷新界面的播放进度条
    break;
    }
    case HRTC_AUDIO_FILE_PLAYING:
    {
    //刷新界面
    break;
    }
    case HRTC_AUDIO_FILE_PAUSED:
    {
    //刷新界面
    break;
    }
    case HRTC_AUDIO_FILE_STOPPED:
    {
    //刷新界面
    break;
    }
    case HRTC_AUDIO_FILE_PLAY_COMPLETED:
    {
    //刷新界面
    break;
    }
    }
    break;
    }
    Default:
    //错误信息提示
    }
    }
  5. 设置音乐文件播放位置

    播放过程中可以调用setAudioFilePosition设置音乐文件播放位置,可用于通过拖动进度条改变音乐文件的播放位置。

    engine-> setAudioFilePosition(50);
  6. 暂停播放音乐文件

    调用pauseAudioFile接口可以暂停播放一个音乐文件。

    engine->pauseAudioFile();
  7. 恢复播放暂停的音乐文件

    音乐文件暂停播放后,可以调用resumeAudioFile接口恢复播放。

    engine->resumeAudioFile();
  8. 停止播放音乐文件

    调用stopAudioFile接口可以停止播放音乐文件。

    engine->stopAudioFile();
  9. 音乐文件播放结束回调

    音乐文件播放结束后,sdk会触发onAudioMixStateChangedNotify回调,传入state参数为HRTC_AUDIO_FILE_PLAY_COMPLETED来通知上层应用。

    void HWEngineEventHandler::onAudioMixStateChangedNotify(HRTCAudioFileState state, HRTCAudioFileReason reason, unsigned long long value)
    {
        //收到音乐文件播放结束通知后,可以刷新界面,比如恢复播放前初始界面状态。
        if (state == HRTC_AUDIO_FILE_PLAY_COMPLETED) {
        }
    }

相关文档