直播过程控制

本章节介绍互动直播过程中网易云提供的各种控制功能。包括互动直播控制通用控制互动直播控制包括改变自己在会议中的角色(互动者/观众)、互动直播过程中切换推流地址 通用控制包括是否接收某用户的音频或视频数据、设置扬声器等

改变自己在会议中的角色

多人模式下用户角色设定是通过setParameters或者setParameter接口进行设置的,参数名称在AVChatParameters中的KEY_SESSION_MULTI_MODE_USER_ROLE。在普通模式下,允许发送和接收数据。当切换到观众模式时,自己仅接收数据,不再发送数据。

    /**
     * 多人模式下用户角色设定。
     *
     * 普通模式下,允许发送和接收数据。当切换到观众模式时,自己仅接收数据,不再发送数据。
     * @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);

设置静音

设置静音是设置本地音频,也不发送本地音频数据。

    /**
     * 开/关本地音频.
     *
     * @param muted {@code true} 静音本地语音,{@code false} 取消本地语音静音
     */
    public abstract void muteLocalAudio(boolean muted);
参数 说明
account 用户账号。
muted true 静音;false 取消静音。
//关闭语音发送.
 AVChatManager.getInstance().muteLocalAudio(true);

设置视频

设置本地视频流的发送。

    /**
     * 开/关本地视频流的发送.
     *
     * @param muted {@code true} 不发送本地视频流,{@code false} 发送本地视频流
     */
    public abstract void muteLocalVideo(boolean muted);
参数 说明
account 用户账号。
muted true 不发送;false 发送数据据。
 // 关闭摄像头
 AVChatManager.getInstance().muteLocalVideo(true);

指定某用户设置是否对其静音

设置是否允许播放远端用户语音流数据。

   /**
     * 设置是否允许播放远端用户数据.
     *
     * @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);

指定某用户设置是否接收其视频

设置是否允许播放远端用户视频流数据。

    /**
     * 设置是否允许播放远端用户数据.
     *
     * @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);

设置扬声器

设置是否使用扬声器。

    /**
     * 是否使用扬声器
     *
     * @param enable {@code true} 打开扬声器,{@code false} 关闭扬声器
     */
    public abstract void setSpeaker(boolean enable);
参数 说明
enable 是否打开扬声器。
boolean speakerMode = true;
AVChatManager.getInstance().setSpeaker(speakerMode = !speakerMode);

获取麦克风状态

检查麦克风是否静音。

    /**
     * 检查麦克风是否静音
     *
     * @return 麦克风是否静音
     */
    public abstract boolean isMicrophoneMute();
boolean isMute = AVChatManager.getInstance().isMicrophoneMute();

设置麦克风静音

设置麦克风是否静音。

    /**
     * 设置麦克风是否静音
     *
     * @param mute 麦克风是否静音
     */
    public abstract void setMicrophoneMute(boolean mute);
参数 说明
mute 麦克风是否静音。
boolean mute = true;
AVChatManager.getInstance(). setMicrophoneMute(mute = ! mute);

切换通话模式

视频切换为音频需要关闭预览和视频模块,音频切换为视频需要打开预览和视频模块。

其中,设置打开和关闭视频模块enableVideodisableVideo详见加入互动直播房间节,设置打开和关闭预览startVideoPreviewstopVideoPreview详见开始和停止视频采集节。

    /**
     * 是否发送本地视频流数据.
     *
     * @return {@code true} 本地视频暂停,{@code false} 本地视频未暂停
     */
    public abstract boolean isLocalVideoMuted();
    /**
     * 开/关本地视频流的发送.
     *
     * @param muted {@code true} 不发送本地视频流,{@code false} 发送本地视频流
     */
    public abstract void muteLocalVideo(boolean muted);

muteLocalVideo参数说明: | 参数 | 说明 | | :-------- | :------ | | muted | 是否发送本地视频流。 |

互动直播过程中切换推流地址

在互动直播的过程中可以实时的更新推流地址。如果加入房间时就没有指定推流地址,那么后续也不能实时更新推流地址。

    /**
     *
     * 互动直播推流地址。
     *
     * 推流地址,仅主播设置,非主播用户不能设置此参数。 如果需要开启直播,必须在通话前设置推流地址,通话过程中可以更新推流地址。
    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);