在实时音视频互动过程中,你可能需要结合业务场景设置本地音视频流的发布状态。
本文以 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 |