直播过程控制
本章节介绍互动直播过程中网易云信提供的各种控制功能。包括互动直播控制和通用控制。 互动直播控制包括改变自己在会议中的角色(互动者/观众)、互动直播过程中切换推流地址 通用控制包括是否接收某用户的音频或视频数据、设置扬声器等
改变自己在会议中的角色
- API介绍
多人模式下用户角色设定是通过setParameters或者setParameter接口进行设置的,参数名称在AVChatParameters中的KEY_SESSION_MULTI_MODE_USER_ROLE
。在普通模式下,允许发送和接收数据。当切换到观众模式时,自己仅接收数据,不再发送数据。
- API原型
/**
* 多人模式下用户角色设定。
*
* 普通模式下,允许发送和接收数据。当切换到观众模式时,自己仅接收数据,不再发送数据。
* @see AVChatUserRole#AUDIENCE
* @see AVChatUserRole#NORMAL
*/
public static final Key<Integer> KEY_SESSION_MULTI_MODE_USER_ROLE = new Key<>(RtcParameters.KEY_SESSION_MULTI_MODE_USER_ROLE, Integer.class);
- 参数说明
参数 | 说明 |
---|---|
value | 角色,参考AVChatUserRole ,AUDIENCE 是观众模式,NORMAL 是普通模式。 |
- 示例
AVChatManager.getInstance().setParameter(AVChatParameters.KEY_SESSION_MULTI_MODE_USER_ROLE, AVChatUserRole.NORMAL);
设置静音
- API介绍
设置静音是设置本地音频,也不发送本地音频数据。
- API原型
/**
* 开/关本地音频.
*
* @param muted {@code true} 静音本地语音,{@code false} 取消本地语音静音
*/
public abstract void muteLocalAudio(boolean muted);
- 参数说明
参数 | 说明 |
---|---|
account | 用户账号。 |
muted | true 静音;false 取消静音。 |
- 示例
//关闭语音发送.
AVChatManager.getInstance().muteLocalAudio(true);
设置视频
- API介绍
设置本地视频流的发送。
- API原型
/**
* 开/关本地视频流的发送.
*
* @param muted {@code true} 不发送本地视频流,{@code false} 发送本地视频流
*/
public abstract void muteLocalVideo(boolean muted);
- 参数说明
参数 | 说明 |
---|---|
account | 用户账号。 |
muted | true 不发送;false 发送数据据。 |
- 示例
// 关闭摄像头
AVChatManager.getInstance().muteLocalVideo(true);
指定某用户设置是否对其静音
- API介绍
设置是否允许播放远端用户语音流数据。
- API原型
/**
* 设置是否允许播放远端用户数据.
*
* @param account 用户账号
* @param muted {@code true} 不解码播放远端语音流,{@code false} 解码播放远端语音流
*/
public abstract void muteRemoteAudio(String account, boolean muted);
- 参数说明
参数 | 说明 |
---|---|
account | 用户账号。 |
muted | true 不解码语音流数据;false 解码语音流数据。 |
- 示例
// 不解码播放远端语音流
AVChatManager.getInstance().muteRemoteAudio(account, true);
指定某用户设置是否接收其视频
- API介绍
设置是否允许播放远端用户视频流数据。
- API原型
/**
* 设置是否允许播放远端用户数据.
*
* @param account 用户账号
* @param muted {@code true} 不解码绘制远端视频流,{@code false} 解码绘制远端视频流
*/
public abstract void muteRemoteVideo(String account, boolean muted);
- 参数说明
参数 | 说明 |
---|---|
account | 用户账号。 |
muted | true 不解码视频流数据;false 解码视频流数据。 |
- 示例
//不解码绘制远端视频流
AVChatManager.getInstance().muteRemoteVideo(account, true);
设置扬声器
- API介绍
设置是否使用扬声器。
- API原型
/**
* 是否使用扬声器
*
* @param enable {@code true} 打开扬声器,{@code false} 关闭扬声器
*/
public abstract void setSpeaker(boolean enable);
- 参数说明
参数 | 说明 |
---|---|
enable | 是否打开扬声器。 |
- 示例
boolean speakerMode = true;
AVChatManager.getInstance().setSpeaker(speakerMode = !speakerMode);
设置音频输出设备
- API介绍
设置音频输出设备
- API原型
/**
* 设置音频输出设备
* 可选设备列表来自此回调 {@link AVChatStateObserverLite#onAudioDeviceChanged}
*
* @param audioDevice {@link com.netease.nimlib.sdk.avchat.constant.AVChatAudioDevice}
*/
public abstract void selectAudioDevice(int audioDevice);
- 参数说明
参数 | 说明 |
---|---|
int | 音频输出设备id,具体类型参考AVChatAudioDevice。 |
- 示例
AVChatManager.getInstance(). selectAudioDevice(AVChatAudioDevice.SPEAKER_PHONE);
获取麦克风状态
- API介绍
检查麦克风是否静音。
- API原型
/**
* 检查麦克风是否静音
*
* @return 麦克风是否静音
*/
public abstract boolean isMicrophoneMute();
- 示例
boolean isMute = AVChatManager.getInstance().isMicrophoneMute();
设置麦克风静音
- API介绍
设置麦克风是否静音。
- API原型
/**
* 设置麦克风是否静音
*
* @param mute 麦克风是否静音
*/
public abstract void setMicrophoneMute(boolean mute);
- 参数说明
参数 | 说明 |
---|---|
mute | 麦克风是否静音。 |
- 示例
boolean mute = true;
AVChatManager.getInstance(). setMicrophoneMute(mute = ! mute);
切换通话模式
- API介绍
视频切换为音频需要关闭预览和视频模块,音频切换为视频需要打开预览和视频模块。
其中,设置打开和关闭视频模块enableVideo
和disableVideo
详见加入互动直播房间节,设置打开和关闭预览startVideoPreview
和stopVideoPreview
详见开始和停止视频采集节。
- API原型
/**
* 是否发送本地视频流数据.
*
* @return {@code true} 本地视频暂停,{@code false} 本地视频未暂停
*/
public abstract boolean isLocalVideoMuted();
/**
* 开/关本地视频流的发送.
*
* @param muted {@code true} 不发送本地视频流,{@code false} 发送本地视频流
*/
public abstract void muteLocalVideo(boolean muted);
- 参数说明
muteLocalVideo参数说明: | 参数 | 说明 | | :-------- | :------ | | muted | 是否发送本地视频流。 |
示例
/** * 视频切换为音频 */ AVChatManager.getInstance().stopVideoPreview(); AVChatManager.getInstance().disableVideo(); /** * 音频切换为视频 */ //打开视频 AVChatManager.getInstance().enableVideo(); AVChatManager.getInstance().startVideoPreview(); // 是否在发送视频 即摄像头是否开启 if (AVChatManager.getInstance().isLocalVideoMuted()) { AVChatManager.getInstance().muteLocalVideo(false); }
互动直播过程中切换推流地址
- API介绍
在互动直播的过程中可以实时的更新推流地址。如果加入房间时就没有指定推流地址,那么后续也不能实时更新推流地址。
- API原型
/**
*
* 互动直播推流地址。
*
* 推流地址,仅主播设置,非主播用户不能设置此参数。 如果需要开启直播,必须在通话前设置推流地址,通话过程中可以更新推流地址。
public static final Key<String> KEY_SESSION_LIVE_URL = new Key<>(RtcParameters.KEY_SESSION_LIVE_URL, String.class);
- 参数说明
参数 | 说明 |
---|---|
value | 推流地址。 |
- 示例
protected String pullUrl = "..."; // 推流地址
AVChatManager.getInstance().setParameter(AVChatParameters.KEY_SESSION_LIVE_URL, pushUrl);
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×