在实时音视频互动过程中,你可能需要结合业务场景设置本地音视频流的发布状态。
本文以 C++ 语言为例,介绍如何设置本地流的发布状态。如需使用 Java 或 Objective-C 语言,请查看各平台 API 对照表。
声网提供如下方法设置本地流的发布状态:
| 方法 | 描述 |
|---|---|
enableLocalAudio 或 enableLocalVideo |
设置是否开启本地音频或视频采集模块:true:(默认)开启。开启后,SDK 会采集本地音频或视频,用户才可以选择是否发布本地流。false:关闭。关闭后,SDK 不会采集本地音频或视频,所以没有本地流可以发布。如果你仅需取消或恢复发布本地流,声网推荐调用 muteLocalAudioStream 或 muteLocalVideoStream。 |
muteLocalAudioStream 或 muteLocalVideoStream |
设置是否取消发布本地流:true:取消发布。false:恢复发布。 |
带 options 参数的 joinChannel |
加入频道时,可通过 ChannelMediaOptions 的 publishLocalAudio 或 publishLocalVideo 设置本地流的发布状态:true:(默认)发布。false:不发布。 |
setClientRole |
设置直播场景下的用户角色。CLIENT_ROLE_AUDIENCE: (默认)观众。CLIENT_ROLE_BROADCASTER: 主播。默认发布本地流。 |
options 参数的 joinChannel 方法加入频道,muteLocalAudioStream 或 muteLocalVideoStream 只有在 joinChannel 后调用才生效。setClientRole(AUDIENCE),则用户不发布本地流。不论带 options 参数的 joinChannel、muteLocalAudioStream 或 muteLocalVideoStream 如何设置,都不会改变发布状态。setClientRole(BROADCASTER) 和带 options 参数的 joinChannel、muteLocalAudioStream 或 muteLocalVideoStream 方法搭配使用,则后调用的方法决定发布状态。自 3.4.5 版本起,声网在 ChannelMediaOptions 中新增 publishLocalAudio 和 publishLocalVideo成员,默认值为 true。你可以调用带 options 参数的 joinChannel 方法加入频道并设置音视频流的发布状态。
如果你需要升级至 3.4.5 及之后版本,为保证你的业务功能不受影响,声网推荐你参考如下内容调整发布设置。
在 3.4.5 之前版本中:
joinChannel 均不可以设置本地流的发布状态。muteLocalAudioStream 和 muteLocalVideoStream 在加入频道前后调用均可生效。IRtcEngine 类的 muteLocalAudioStream(true) 或 muteLocalVideoStream(true) 对 IRtcEngine 频道和 IChannel 频道都会生效。在 3.4.5 及之后版本中:
options 参数的 joinChannel 可以设置本地流的发布状态。options 参数的 joinChannel 方法加入频道,muteLocalAudioStream 或 muteLocalVideoStream 只有在 joinChannel 后调用才生效。IRtcEngine 类和 IChannel 类下的 muteLocalAudioStream 和 muteLocalVideoStream 分别控制各自频道的发布状态。| Windows | Android/React Native/Flutter | iOS/macOS |
|---|---|---|
enableLocalAudio |
enableLocalAudio |
enableLocalAudio |
enableLocalVideo |
enableLocalVideo |
enableLocalVideo |
muteLocalAudioStream |
muteLocalAudioStream |
muteLocalAudioStream |
muteLocalVideoStream |
muteLocalVideoStream |
muteLocalVideoStream |
joinChannel |
joinChannel |
joinChannelByToken |
setClientRole |
setClientRole |
setClientRole |
setChannelProfile |
setChannelProfile |
setChannelProfile |
IRtcEngine |
RtcEngine |
AgoraRtcEngineKit |
IChannel |
RtcChannel |
AgoraRtcChannel |
| Unity | Electron |
|---|---|
EnableLocalAudio |
enableLocalAudio |
EnableLocalVideo |
enableLocalVideo |
MuteLocalAudioStream |
muteLocalAudioStream |
MuteLocalVideoStream |
muteLocalVideoStream |
JoinChannel |
joinChannel |
SetClientRole |
setClientRole |
SetChannelProfile |
setChannelProfile |
IRtcEngine |
AgoraRtcEngine |
AgoraChannel |
AgoraRtcChannel |