虚拟节拍器
configRhythmPlayer
配置虚拟节拍器。
Java
public abstract int configRhythmPlayer(AgoraRhythmPlayerConfig config);
- 调用 startRhythmPlayer 后,你可以调用该方法重新配置虚拟节拍器。
- 开启虚拟节拍器后,SDK 会从头开始播放指定的音频文件,并根据你在 AgoraRhythmPlayerConfig 中设置的 beatsPerMinute 控制每个文件的播放时长。例如,将 beatsPerMinute 设为
60
,则 SDK 会 1 秒播放 1 个节拍。如果文件时长超过了节拍时长,则 SDK 只播放节拍时长部分的音频。 - 虚拟节拍器的声音默认不会发布至远端,如果你希望远端用户听到虚拟节拍器的声音,你可以在调用该方法后,将 ChannelMediaOptions 中的 publishRhythmPlayerTrack 设为
true
。
调用时机
加入频道前后均可调用。
调用限制
无。
相关回调
成功调用该方法后,SDK 会在本地触发 onRhythmPlayerStateChanged 回调,报告虚拟节拍器的状态。
参数
- config
- 节拍器配置。详见 AgoraRhythmPlayerConfig。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
startRhythmPlayer
开启虚拟节拍器。
Java
public abstract int startRhythmPlayer(
String sound1, String sound2, AgoraRhythmPlayerConfig config);
- 开启虚拟节拍器后,SDK 会从头开始播放指定的音频文件,并根据你在 AgoraRhythmPlayerConfig 中设置的 beatsPerMinute 控制每个文件的播放时长。例如,将 beatsPerMinute 设为
60
,则 SDK 会 1 秒播放 1 个节拍。如果文件时长超过了节拍时长,则 SDK 只播放节拍时长部分的音频。 - 虚拟节拍器的声音默认不会发布至远端,如果你希望远端用户听到虚拟节拍器的声音,你可以在调用该方法后,将 ChannelMediaOptions 中的 publishRhythmPlayerTrack 设为
true
。
适用场景
在音乐教学、体育教学等场景中,老师通常需要使用节拍器,让学生跟着正确的节拍练习。节拍由强拍和弱拍组成,每小节的第一拍称为强拍,其余称为弱拍。
调用时机
加入频道前后均可调用。
调用限制
无。
相关回调
成功调用该方法后,SDK 会在本地触发 onRhythmPlayerStateChanged 回调,报告虚拟节拍器的状态。
参数
- sound1
- 强拍文件的绝对路径或 URL 地址,需精确到文件名及后缀。例如
content://com.android.providers.media.documents/document/audio%203A14441
。支持的音频文件格式见 RTC SDK 支持播放哪些格式的音频文件。 - sound2
- 弱拍文件的绝对路径或 URL 地址,需精确到文件名及后缀。例如
content://com.android.providers.media.documents/document/audio%203A14441
。支持的音频文件格式见 RTC SDK 支持播放哪些格式的音频文件。 - config
- 节拍器配置。详见 AgoraRhythmPlayerConfig。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败
- -22: 无法找到音频文件。请填写正确的 sound1 和 sound2。
stopRhythmPlayer
关闭虚拟节拍器。
Java
public abstract int stopRhythmPlayer();
详情
调用 startRhythmPlayer 后,你可以调用该方法关闭虚拟节拍器。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
onRhythmPlayerStateChanged
虚拟节拍器状态发生改变回调。
Java
public void onRhythmPlayerStateChanged(int state, int reason) {}
详情
虚拟节拍器状态发生改变时,SDK 会触发该回调报告当前的虚拟节拍器状态。在虚拟节拍器出现故障时,该回调可以帮助你了解当前虚拟节拍的状态以及出现故障的原因,方便你排查问题。
参数
- state
- 当前的虚拟节拍器状态。
- RHYTHM_PLAYER_STATE_IDLE (810): 虚拟节拍器未开启或已关闭。
- RHYTHM_PLAYER_STATE_OPENING (811): 正在打开节拍音频文件。
- RHYTHM_PLAYER_STATE_DECODING (812): 正在解码节拍音频文件。
- RHYTHM_PLAYER_STATE_PLAYING (813): 正在播放节拍音频文件。
- RHYTHM_PLAYER_STATE_FAILED (814): 开启虚拟节拍器失败。你可以通过报告的错误码 errorCode 排查错误原因,也可以重新尝试开启虚拟节拍器。
- errorCode
- 虚拟节拍器发生错误的错误码和错误信息。
- RHYTHM_PLAYER_REASON_OK (0): 正常播放节拍音频文件,没有错误。
- RHYTHM_PLAYER_REASON_FAILED (1): 一般性错误,没有明确原因。
- RHYTHM_PLAYER_REASON_CAN_NOT_OPEN (801): 打开节拍音频文件出错。
- RHYTHM_PLAYER_REASON_CAN_NOT_PLAY (802): 播放节拍音频文件出错。
- RHYTHM_PLAYER_REASON_FILE_OVER_DURATION_LIMIT (803): 节拍音频文件时长超出限制。最大时长为 1.2 秒。