用户成功加入频道并开始音视频流传输后,可以暂停向指定频道或所有频道发送流,也可以暂停接收指定频道或所有频道的流,从而灵活调整音视频流传输状态。
暂停/恢复发送本地音视频流
可调用以下方法暂停或恢复发送本地音视频流:
agora_rtc_mute_local_audio
(C API)或 muteLocalAudio
(Java API):暂停发送本地音频流。agora_rtc_mute_local_video
(C API)或 muteLocalVideo
(Java API):暂停发送本地视频流。你既可以通过传入频道名暂停或恢复向指定频道发送数据,也可以将频道名设置为空,暂停或恢复向所有频道发送数据。
示例代码如下,仅供参考:
// C
agora_rtc_mute_local_audio ("my_first_channel", 1); // Stop sending audio
agora_rtc_mute_local_video ("my_first_channel", 1); // Stop sending video
agora_rtc_mute_local_audio ("my_first_channel", 0); // Start sending audio
agora_rtc_mute_local_video ("my_first_channel", 0); // Start sending video
// java
mRtcService.muteLocalAudio("my_first_channel", 1); // Stop sending audio
mRtcService.muteLocalVideo ("my_first_channel", 1); // Stop sending video
mRtcService.muteLocalAudio ("my_first_channel", 0); // Start sending audio
mRtcService.muteLocalVideo ("my_first_channel", 0); // Start sending video
提示频道内远端用户音视频流发送状态
发送端调用 agora_rtc_mute_local_audio
或 agora_rtc_mute_local_video
方法更改本地音视频流传输状态后, SDK 会相应地触发以下回调,提示接收端频道内远端用户是否暂停发送音视频流:
on_user_mute_audio
(C API)或 onUserMuteAudio
(Java API):提示本地用户频道内远端用户是否暂停发送音频流。on_user_mute_video
(C API)或 onUserMuteVideo
(Java API):提示本地用户频道内远端用户是否暂停发送视频流。示例代码如下:
// C
static void OnUserMuteAudio (const char *channel, uint32_t uid, int muted)
{
std::cout << __FUNCTION__ << std::endl;
}
static void OnUserMuteVideo (const char *channel, uint32_t uid, int muted)
{
std::cout << __FUNCTION__ << std::endl;
}
static const agora_rtc_event_handler_t listener = {
.on_user_mute_audio = OnUserMuteAudio,
.on_user_mute_video = OnUserMuteVideo,
// ...
};
// Java
@Override
public void onUserMuteAudio(String channel, int uid, boolean muted) {
RtsaLiteDemo.d(TAG, "<onUserMuteAudio> channel=" + channel + ", uid=" + uid
+ ", muted=" + muted);
}
@Override
public void onUserMuteVideo(String channel, int uid, boolean muted) {
RtsaLiteDemo.d(TAG, "<onUserMuteVideo> channel=" + channel + ", uid=" + uid
+ ", muted=" + muted);
}
暂停/恢复接收远端音视频流
可调用以下方法暂停或恢复接收指定频道内指定用户的音视频流:
agora_rtc_mute_remote_audio
(C API)或 muteRemoteAudio
(Java API):暂停接收远端音频流。agora_rtc_mute_remote_video
(C API)或 muteRemoteVideo
(Java API):暂停接收远端视频流。你既可以通过填写频道名暂停接收指定频道的数据,也可以将频道名设置为空暂停接收所有频道的数据。
示例代码如下:
// C
const uint32_t remote_uid = 666;
// Stop receiving audio from a remote user
agora_rtc_mute_remote_audio ("my_first_channel", remote_uid, 1);
// Stop receiving video from a remote user
agora_rtc_mute_remote_video ("my_first_channel", remote_uid, 1);
// Start receiving audio from a remote user
agora_rtc_mute_remote_audio ("my_first_channel", remote_uid, 0);
// Start receiving video from a remote user
agora_rtc_mute_remote_video ("my_first_channel", remote_uid, 0);
// Java
int remote_uid = 666;
// Stop receiving audio from a remote user
mRtcService.muteRemoteAudio ("my_first_channel", remote_uid, 1);
// Stop receiving video from a remote user
mRtcService.muteRemoteVideo ("my_first_channel", remote_uid, 1);
// Start receiving audio from a remote user
mRtcService.muteRemoteAudio ("my_first_channel", remote_uid, 0);
// Start receiving video from a remote user
mRtcService.muteRemoteVideo ("my_first_channel", 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