音乐文件播放

  • Flutter

更新时间不可用

adjustAudioMixingPlayoutVolume

调节音乐文件在本地播放的音量。

Dart
Future<void> adjustAudioMixingPlayoutVolume(int volume);

调用时机

你需要在调用 startAudioMixing 并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用该方法。

参数

参数名描述
volume

音乐文件音量。取值范围为 [0,100],100 (默认值)为原始音量。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

adjustAudioMixingPublishVolume

调节音乐文件远端播放音量。

Dart
Future<void> adjustAudioMixingPublishVolume(int volume);

该方法调节混音音乐文件在远端的播放音量大小。

调用时机

你需要在调用 startAudioMixing 并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用该方法。

参数

参数名描述
volume

音乐文件音量。取值范围为 [0,100],100 (默认值)为原始音量。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

adjustAudioMixingVolume

调节音乐文件的播放音量。

Dart
Future<void> adjustAudioMixingVolume(int volume);

该方法调节混音音乐文件在本端和远端的播放音量大小。

注: 调用该方法不会影响 playEffect 方法中设置的音效文件播放音量。

调用时机

该方法需要在 startAudioMixing 后调用。

参数

参数名描述
volume

音乐文件音量范围为 0~100。100 (默认值)为原始文件音量。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

getAudioMixingCurrentPosition

获取音乐文件的播放进度。

Dart
Future<int> getAudioMixingCurrentPosition();

该方法获取当前音乐文件播放进度,单位为毫秒。

注:

返回值

  • ≥ 0: 方法调用成功,返回当前音乐文件播放进度(ms)。0 表示当前音乐文件未开始播放。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

getAudioMixingDuration

获取音乐文件总时长。

Dart
Future<int> getAudioMixingDuration();

该方法获取音乐文件总时长,单位为毫秒。

调用时机

该方法需要在 startAudioMixing 之后,并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用。

返回值

  • ≥ 0: 方法调用成功则返回音乐文件时长。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

getAudioMixingPlayoutVolume

获取音乐文件的本地播放音量。

Dart
Future<int> getAudioMixingPlayoutVolume();

你可以调用该方法获取混音的音乐文件的本地播放音量,方便排查音量相关问题。

调用时机

该方法需要在 startAudioMixing 之后,并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用。

返回值

  • ≥ 0: 方法调用成功则返回音量值,范围为 [0,100]。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

getAudioMixingPublishVolume

获取音乐文件的远端播放音量。

Dart
Future<int> getAudioMixingPublishVolume();

该接口可以方便开发者排查音量相关问题。

注: 你需要在调用 startAudioMixing 并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用该方法。

返回值

  • ≥ 0: 方法调用成功则返回音量值,范围为 [0,100]。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

getAudioTrackCount

获取当前音乐文件的音轨索引。

Dart
Future<int> getAudioTrackCount();

注:

  • 你需要在调用 startAudioMixing 并收到onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用该方法。

返回值

  • 方法调用成功时,返回当前音乐文件的音轨索引。
  • < 0: 方法调用失败。详见错误码了解详情和解决建议。

所属接口类

pauseAudioMixing

暂停播放音乐文件。

Dart
Future<void> pauseAudioMixing();

当你调用 startAudioMixing 方法播放音乐文件后,如需暂停播放,请调用该方法。如果你需要停止播放,请调用 stopAudioMixing。

调用时机

该方法需要在加入频道后调用。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

resumeAudioMixing

恢复播放音乐文件。

Dart
Future<void> resumeAudioMixing();

当你调用 pauseAudioMixing 暂停播放音乐文件后,如需恢复播放,请调用该方法。

调用时机

该方法需要在加入频道后调用。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

selectAudioTrack

指定当前音乐文件的播放音轨。

Dart
Future<void> selectAudioTrack(int index);

获取音乐文件的音轨数量后,你可以调用该方法指定任一音轨进行播放。例如,如果一个多音轨文件的不同音轨存放了不同语言的歌曲,则你可以调用该方法设置音乐文件的播放语言。

注:

参数

参数名描述
index

指定的播放音轨。取值范围应大于等于 0 且小于 getAudioTrackCount 的返回值。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

selectMultiAudioTrack

选择本地播放和发送至远端的音轨。

Dart
Future<void> selectMultiAudioTrack(
    {required int playoutTrackIndex, required int publishTrackIndex});

你可以调用该方法分别设置本地播放和发送到远端的音轨。 在调用该方法前,你需要通过 openWithMediaSource 来打开媒体文件,并通过 MediaSource 将 enableMultiAudioTrack 设为 true。

适用场景

在 K 歌场景下,主播可以根据需求选择在本地播放一路音轨(如原声),然后发送另一路音轨至远端(如伴唱)以提升听众体验。

参数

参数名描述
playoutTrackIndex

用于本地播放的音轨索引。你可以通过 getStreamInfo 来获取索引值。

publishTrackIndex

用于发送至远端的音轨索引。你可以通过 getStreamInfo 来获取索引值。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。

  • < 0: 方法调用失败。

所属接口类

setAudioMixingDualMonoMode

设置当前音频文件的声道模式。

Dart
Future<void> setAudioMixingDualMonoMode(AudioMixingDualMonoMode mode);

在双声道音频文件中,左声道和右声道可以存储不同的音频数据。根据实际需要,你可以设置声道模式为原始模式、左声道模式、右声道模式或混合模式。

注: 该方法仅适用于双声道的音频文件。

适用场景

在 KTV 场景中,音频文件的左声道存储了伴奏,右声道存储了原唱的歌声。你可以根据实际需求进行设置:

  • 如果你只需听伴奏,则用该方法设置音频文件的声道模式为左声道模式。
  • 如果你需要同时听伴奏和原唱,则调用该方法设置声道模式为混合模式。

调用时机

该方法需要在 startAudioMixing 之后,并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用。

参数

参数名描述
mode

声道模式。详见 AudioMixingDualMonoMode。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

setAudioMixingPitch

调整本地播放的音乐文件的音调。

Dart
Future<void> setAudioMixingPitch(int pitch);

本地人声和播放的音乐文件混音时,调用该方法可以仅调节音乐文件的音调。

调用时机

你需要在调用 startAudioMixing 并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用该方法。

参数

参数名描述
pitch

按半音音阶调整本地播放的音乐文件的音调,默认值为 0,即不调整音调。取值范围为 [-12,12],每相邻两个值的音高距离相差半音。取值的绝对值越大,音调升高或降低得越多。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

setAudioMixingPlaybackSpeed

设置当前音乐文件的播放速度。

Dart
Future<void> setAudioMixingPlaybackSpeed(int speed);

你需要在调用 startAudioMixing 并收到 onAudioMixingStateChanged 回调报告播放状态为 audioMixingStatePlaying 后再调用该方法。

参数

参数名描述
speed

音乐文件的播放速度。推荐取值范围为 [50,400],其中:

  • 50: 0.5 倍速。
  • 100: 原始速度。
  • 400: 4 倍速。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。

所属接口类

setAudioMixingPosition

设置音乐文件的播放位置。

Dart
Future<void> setAudioMixingPosition(int pos);

该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而非从头到尾播放整个文件。

调用时机

该方法需要在 startAudioMixing 之后,并收到 onAudioMixingStateChanged(audioMixingStatePlaying) 回调后调用。

参数

参数名描述
pos

整数。进度条位置,单位为毫秒。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

startAudioMixing

开始播放音乐文件。

Dart
Future<void> startAudioMixing(
      {required String filePath,
      required bool loopback,
      required int cycle,
      int startPos = 0});

该方法支持播放的音频文件格式见 RTC SDK 支持播放哪些格式的音频文件。如果本地音乐文件不存在、文件格式不支持或无法访问在线音乐文件 URL,则 SDK 会报告 audioMixingReasonCanNotOpen。

注:

  • 使用该方法播放时长较短的音效文件可能会导致播放失败。如需播放音效文件,建议使用 playEffect。

  • 如需多次调用该方法,请确保调用间隔大于 500 ms。

  • 在 Android 平台上调用该方法时,请注意如下事项:

    • 请确保使用 Android 4.2 或以上设备,且 API Level 不低于 16。
    • 如果播放的是在线音乐文件,建议不要使用重定向地址。重定向地址在某些机型上可能无法打开。
    • 如果在模拟器上调用该方法,则请确保音乐文件在 /sdcard/ 目录下,且格式为 MP3。

调用时机

该方法在加入频道前后均可调用。

相关回调

调用该方法成功播放音乐文件后,本地会触发 onAudioMixingStateChanged(audioMixingStatePlaying) 回调。播放结束后,本地会触发 onAudioMixingStateChanged(audioMixingStateStopped) 回调。

参数

参数名描述
filePath

文件路径:

  • Android: 文件路径,需精确到文件名及后缀。支持在线文件的 URL 地址,本地文件的 URI 地址、绝对路径或以 /assets/ 开头的路径。通过绝对路径访问本地文件可能会遇到权限问题,建议使用 URI 地址访问本地文件。例如 content://com.android.providers.media.documents/document/audio%3A14441。
  • Windows: 音频文件的绝对路径或 URL 地址,需精确到文件名及后缀。例如 C:\music\audio.mp4。
  • iOS 或 macOS: 音频文件的绝对路径或 URL 地址,需精确到文件名及后缀。例如 /var/mobile/Containers/Data/audio.mp4。
loopback

是否只在本地播放音乐文件:

  • true:只在本地播放音乐文件,只有本地用户能听到音乐。
  • false:将本地播放的音乐文件发布至远端,本地用户和远端用户都能听到音乐。
cycle

音乐文件的播放次数。

  • > 0: 播放次数。例如,1 表示播放 1 次。
  • -1: 无限循环播放。
startPos

音乐文件的播放位置,单位为毫秒。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

stopAudioMixing

停止播放音乐文件。

Dart
Future<void> stopAudioMixing();

当你调用 startAudioMixing 方法播放音乐文件后,如需停止播放,可调用该方法。如果仅需暂停播放,请调用 pauseAudioMixing。

调用时机

该方法需要在加入频道后调用。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

onAudioMixingFinished

本地音乐文件播放已结束回调。

Dart
final void Function()? onAudioMixingFinished;

废弃

弃用: 请改用 onAudioMixingStateChanged。

当调用 startAudioMixing 播放本地音乐文件结束后,会触发该回调。如果调用 startAudioMixing 失败,会返回错误码 WARN_AUDIO_MIXING_OPEN_ERROR。

所属接口类

onAudioMixingPositionChanged

音乐文件播放进度回调。

Dart
final void Function(int position)? onAudioMixingPositionChanged;

当你调用 startAudioMixing 方法播放音乐文件后,SDK 会每隔一秒触发一次该回调,报告音乐文件当前的播放进度。

参数

参数名描述
position

音乐文件当前的播放进度,单位为 ms。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。

所属接口类

onAudioMixingStateChanged

音乐文件的播放状态已改变回调。

Dart
final void Function(AudioMixingStateType state, AudioMixingReasonType reason)?
      onAudioMixingStateChanged;

该回调在音乐文件播放状态发生改变时触发,并报告当前的播放状态和错误码。

参数

参数名描述
state

音乐文件播放状态。详见 AudioMixingStateType。

reason

错误码。详见 AudioMixingReasonType。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类