# 视频管理

本文将介绍视频双录中的视频管理相关功能。

# 发送本地视频流

/**
 *  @brief 开启关闭发送本地视频流
 *      1.在频道中将会与服务器进行交互,服务器会更新状态并同步给其他用户
 *      2.未在频道中则标记是否上传音频流,在join时生效
 *      3.建议每次join前设置
 *  @param enable 是否开启本地视频流
 *  @return 返回 true 表示正常执行调用流程,false 表示调用异常
 */
-(bool)enableUploadVideoStream:(bool)enable;

在多方通话中,enableUploadVideoStream (opens new window) 的作用是设置“是否上传视频流数据”,可以在加入频道前调用,也可以在加入频道后调用,会开启或关闭发送本地视频流数据。

服务器会根据 enableUploadVideoStream (opens new window) 设定的值来确定是否上传视频流数据。

同时,频道中的其他成员会收到该成员”是否上传视频“的状态变化回调(onParticipantUpdate (opens new window)),从而进行语音通话和视频通话的切换。

此外,调用该方法发送本地视频流数据还要依赖摄像头是否已经打开。

# 网络状态监听

视频通话过程中,与会者的网络状态发生变化导致视频通话出现质量波动的时候,SDK会通过回调事件进行上报。

/**
 *  @brief 成员更新回调
 *  @param participant 成员对象
 *  @param participantChangeParam 变化标识集合
 */
- (void)onParticipantUpdate:(JCMediaChannelParticipant*)participant participantChangeParam:(JCMediaChannelParticipantChangeParam *)participantChangeParam mediaChannel:(JCMediaChannel *)mediaChannel;

示例:

- (void)onParticipantUpdate:(JCMediaChannelParticipant*)participant participantChangeParam:(JCMediaChannelParticipantChangeParam *)participantChangeParam mediaChannel:(JCMediaChannel *)mediaChannel {
    if (participantChangeParam.netStatus) {
        switch (participant.netStatus) {
            case JCMediaChannelnetStatusDisconnected:
                // 断开
                break;
            case JCMediaChannelnetStatusVeryBad:
                // 非常差
                break;
            case JCMediaChannelnetStatusBad:
                // 差
                break;
            case JCMediaChannelnetStatusNormal:
                // 一般
                break;
            case JCMediaChannelnetStatusGood:
                // 好
                break;
            case JCMediaChannelnetStatusVeryGood:
                // 很好
                break;
                
            default:
                break;
        }
    }
}