通话过程控制

本章节介绍音视频通话过程中网易云提供的各种控制功能。包括点对点通话的控制多人会议的控制通用控制

点对点通话的控制包括发送通话控制信息、设置静音、切换通话模式等

多人会议的控制包括改变自己在会议中的角色(互动者/观众)

通用控制包括是否接收某用户的音频或视频数据、设置扬声器等

点对点通话的控制

发送通话控制信息

送通话控制信息

@protocol NIMNetCallManager <NSObject>
/**
 *  发送网络通话的控制信息,用于方便通话双方沟通信息
 *
 *  @param callID 控制信息相关通话的call id
 *  @param type   控制类型
 */
- (void)control:(UInt64)callID
           type:(NIMNetCallControlType)type;
@end
参数 类型 说明
callID UInt64 控制信息相关通话的call id
type NIMNetCallControlType 控制类型
//发送切换到音频模式控制类型
[[NIMAVChatSDK sharedSDK].netCallManager control:self.callInfo.callID type:NIMNetCallControlTypeToAudio];

收到通话控制信息回调

收到通话控制信息回调

@protocol NIMNetCallManagerDelegate <NSObject>
/**
 *  收到对方网络通话控制信息,用于方便通话双方沟通信息
 *
 *  @param callID  相关网络通话的call id
 *  @param user    对方帐号
 *  @param control 控制类型
 */
- (void)onControl:(UInt64)callID
             from:(NSString *)user
             type:(NIMNetCallControlType)control;
@end
参数 类型 说明
callID UInt64 相关网络通话的call id
user NSString 对方帐号
type NIMNetCallControlType 控制类型
- (void)onControl:(UInt64)callID
             from:(NSString *)user
             type:(NIMNetCallControlType)control{
    //收到的控制类型
    switch (control) {
        case NIMNetCallControlTypeToAudio:
            [self switchToAudio];
            break;
        case NIMNetCallControlTypeCloseVideo:
            [self.view makeToast:@"对方关闭了摄像头"
                        duration:2
                        position:CSToastPositionCenter];
            break;
        case NIMNetCallControlTypeOpenVideo:
            [self.view makeToast:@"对方开启了摄像头"
                        duration:2
                        position:CSToastPositionCenter];
            break;

        ...

        default:
            break;
    }
}

设置静音

设置静音

@protocol NIMNetCallManager <NSObject>
/**
 *  设置网络通话麦克风静音
 *
 *  @param mute 是否开启麦克风静音
 *
 *  @return 开启麦克风静音是否成功
 *
 *  @discussion 该设置不影响伴音发送, 切换网络通话类型将丢失该设置
 */
- (BOOL)setMute:(BOOL)mute;
@end
参数 类型 说明
mute BOOL 是否开启麦克风静音
//开启静音
 [[NIMAVChatSDK sharedSDK].netCallManager setMute:YES];

切换通话模式

切换通话模式,用于在语音模式和视频模式之间切换。如果需要对方接受才能切换,请使用 control:typeonConrtol:from:type 进行协商,达成一致后再调用该接口进行切换。

@protocol NIMNetCallManager <NSObject>
/**
 *  切换网络通话类型
 *
 *  @param type 通话类型
 *
 *  @discussion 切换通话类型会丢失这些设置: 静音模式, 扬声器模式, 摄像头关闭, 切换摄像头
 */
- (void)switchType:(NIMNetCallMediaType)type;
@end
参数 类型 说明
type NIMNetCallMediaType 通话类型
//切换为视频模式
[[NIMAVChatSDK sharedSDK].netCallManager switchType:NIMNetCallMediaTypeVideo];

多人通话的控制

改变自己在会议中的角色

改变自己在会议中的角色

@protocol NIMNetCallManager <NSObject>
/**
 *  改变自己在会议中的角色
 *
 *  @param actor 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据
 *
 *  @return 设置是否成功
 */
- (BOOL)setMeetingRole:(BOOL)actor;
@end
参数 类型 说明
actor BOOL 是否为发言者角色, 发言者发送音视频数据, 非发言者不发送音视频数据
//切换为发言者
[[NIMAVChatSDK sharedSDK].netCallManager setMeetingRole:YES];

通用控制

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

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

@protocol NIMNetCallManager <NSObject>
/**
 *  指定某用户设置是否对其静音
 *
 *  @param mute 是否静音, 静音后将听不到该用户的声音
 *  @param uid  用户 uid
 *
 *  @return 是否设置成功. 如果用户尚未加入, 则无法设置
 */
- (BOOL)setAudioMute:(BOOL)mute forUser:(NSString *)uid;
@end
参数 类型 说明
mute BOOL 是否静音, 静音后将听不到该用户的声音
uid NSString 用户uid
//指定用户设置对其静音
[[NIMAVChatSDK sharedSDK].netCallManager setAudioMute:YES forUser:self.uid];

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

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

@protocol NIMNetCallManager <NSObject>
/**
 *  指定某用户设置是否接收其视频
 *
 *  @param mute 是否拒绝视频, 拒绝后将没有该用户视频数据回调
 *  @param uid  用户uid
 *
 *  @return 是否设置成功. 如果用户尚未加入, 则无法设置
 */
- (BOOL)setVideoMute:(BOOL)mute forUser:(NSString *)uid;
@end
参数 类型 说明
mute BOOL 是否拒绝视频, 拒绝后将没有该用户视频数据回调
uid NSString 用户uid
//指定用户不接受其视频
[[NIMAVChatSDK sharedSDK].netCallManager setVideoMute:YES forUser:self.uid];

设置扬声器

设置扬声器

@protocol NIMNetCallManager <NSObject>
/**
 *  设置网络通话扬声器模式
 *
 *  @param useSpeaker 是否开启扬声器
 *
 *  @return 开启扬声器是否成功
 *
 *  @discussion 切换网络通话类型将丢失该设置
 */
- (BOOL)setSpeaker:(BOOL)useSpeaker;
@end
参数 类型 说明
useSpeaker BOOL 是否开启扬声器
//开启扬声器 
[[NIMAVChatSDK sharedSDK].netCallManager setSpeaker:YES];