用户成功连接 Connection 并开始音视频流传输后,可以暂停向指定 Connection 或所有 Connection 发送流,也可以暂停接收指定 Connection 或所有 Connection 的流,从而灵活调整音视频流传输状态。
暂停/恢复发送本地音视频流
可调用以下方法暂停或恢复发送本地音视频流:
agora_rtc_mute_local_audio
(C API)或 muteLocalAudio
(Java API):暂停发送本地音频流。agora_rtc_mute_local_video
(C API)或 muteLocalVideo
(Java API):暂停发送本地视频流。你既可以通过传入 Connection ID 暂停或恢复向指定 Connection 发送数据,也可以将 Connection ID 设置为 0,暂停或恢复向所有 Connection 发送数据。
示例代码如下,仅供参考:
C 示例代码
// C
agora_rtc_mute_local_audio (12345, 1); // Stop sending audio
agora_rtc_mute_local_video (12345, 1); // Stop sending video
agora_rtc_mute_local_audio (12345, 0); // Start sending audio
agora_rtc_mute_local_video (12345, 0); // Start sending video
Java 示例代码
// java
mRtcService.muteLocalAudio(12345, 1); // Stop sending audio
mRtcService.muteLocalVideo (12345, 1); // Stop sending video
mRtcService.muteLocalAudio (12345, 0); // Start sending audio
mRtcService.muteLocalVideo (12345, 0); // Start sending video
提示频道内远端用户音视频流发送状态
发送端调用 agora_rtc_mute_local_audio
或 agora_rtc_mute_local_video
方法更改本地音视频流传输状态后, SDK 会相应地触发以下回调,提示接收端 Connection ID 内远端用户是否暂停发送音视频流:
on_user_mute_audio
(C API)或 onUserMuteAudio
(Java API):提示本地用户 Connection ID 内远端用户是否暂停发送音频流。on_user_mute_video
(C API)或 onUserMuteVideo
(Java API):提示本地用户 Connection ID 内远端用户是否暂停发送视频流。示例代码如下:
C 示例代码
// C
static void __on_user_mute_audio(connection_id_t conn_id, uint32_t uid, bool muted)
{
printf("[conn-%u] audio: uid=%u muted=%d\n", conn_id, uid, muted);
}
static void __on_user_mute_video(connection_id_t conn_id, uint32_t uid, bool muted)
{
printf("[conn-%u] video: uid=%u muted=%d\n", conn_id, uid, muted);
}
Java 示例代码
// Java
@Override
public void onUserMuteAudio(int connId, int uid, boolean muted) {
RtsaLiteDemo.d(TAG,
"<onUserMuteAudio> connId=" + connId + ", uid=" + uid + ", muted=" + muted);
}
@Override
public void onUserMuteVideo(int connId, int uid, boolean muted) {
RtsaLiteDemo.d(TAG,
"<onUserMuteVideo> connId=" + connId + ", uid=" + uid + ", muted=" + muted);
}
暂停/恢复接收远端音视频流
可调用以下方法暂停或恢复接收指定 Connection ID 中指定用户的音视频流:
agora_rtc_mute_remote_audio
(C API)或 muteRemoteAudio
(Java API):暂停接收远端音频流。agora_rtc_mute_remote_video
(C API)或 muteRemoteVideo
(Java API):暂停接收远端视频流。你既可以通过填写 Connection ID 暂停接收指定 Connection ID 的数据,也可以将 Connection ID 设置为 0 暂停接收所有 Connection 的数据。
示例代码如下:
C 示例代码
// C
const uint32_t remote_uid = 666;
// Stop receiving audio from a remote user
agora_rtc_mute_remote_audio (12345, remote_uid, 1);
// Stop receiving video from a remote user
agora_rtc_mute_remote_video (12345, remote_uid, 1);
// Start receiving audio from a remote user
agora_rtc_mute_remote_audio (12345, remote_uid, 0);
// Start receiving video from a remote user
agora_rtc_mute_remote_video (12345, remote_uid, 0);
Java 示例代码
// Java
int remote_uid = 666;
// Stop receiving audio from a remote user
mRtcService.muteRemoteAudio (12345, remote_uid, 1);
// Stop receiving video from a remote user
mRtcService.muteRemoteVideo (12345, remote_uid, 1);
// Start receiving audio from a remote user
mRtcService.muteRemoteAudio (12345, remote_uid, 0);
// Start receiving video from a remote user
mRtcService.muteRemoteVideo (12345, remote_uid, 0);
你可以分别参考以下 API 的文档链接:
agora_rtc_mute_local_audio
agora_rtc_mute_local_video
agora_rtc_mute_remote_audio
agora_rtc_mute_remote_video
on_user_mute_audio
on_user_mute_video