音视频订阅

目前云信的音视频订阅,支持视频订阅和音频订阅,由于服务器针对音频是ASL转发,所以音频订阅不能精确到会议中某一个用户,只支持音频全订阅;而视频可以针对会议中的某一个用户订阅视频。这期开始支持多流。默认情况下,客户不需要调用任何API即为全订阅和发布。为了兼容老版本,因此有自动订阅和手动订阅的区别,老版本不需要任何操作,由服务器统一自动订阅和发布;新版本可以选择自动订阅,也可以选择手动订阅;由于计费规则的调整,建议新版本的用户还是选择手动订阅的策略。

目前主要接口包含: 1.设置自动发布和自动订阅的接口 2.查询是否自动发布视频接口 3.发布视频接口 4.取消发布视频接口 5.查询是否自动订阅视频接口 6.查询是否自动订阅音频接口 7.订阅视频接口 8.取消订阅视频接口 9.订阅音频接口 10.取消订阅音频接口 11.设置本地视频多流模式(Beta)

注意事项1:自动模式和手动模式是互斥的,自动模式下,所有的手动接口操作都会返回错误。

注意事项2:点对点模式都是SDK自动订阅和发布的,不允许用户操作,因此所有的手动接口操作都会返回错误。

注意事项3:音视频模式切换、用户角色切换时,在自动模式下,用户不需要关心这些;但是在手动模式下,用户需要自行调用对应的接口。

NIMNetCallSubscribeError参数说明

NIMNetCallSubscribeError参数说明

参数 类型 说明
NIMNetCallSubscribeErrorNO NIMNetCallSubscribeError 成功
NIMNetCallSubscribeErrorFailed NIMNetCallSubscribeError 失败
NIMNetCallSubscribeErrorVideoMute NIMNetCallSubscribeError 视频mute,不能进行发布or取消发布视频操作
NIMNetCallSubscribeErrorAudience NIMNetCallSubscribeError 观众模式,不能进行发布or取消发布视频操作
NIMNetCallSubscribeErrorAudioMode NIMNetCallSubscribeError 音频模式,不能进行发布or取消发布视频操作
NIMNetCallSubscribeErrorOperationing NIMNetCallSubscribeError 重复操作/正在进行中
NIMNetCallSubscribeErrorPatternMutex NIMNetCallSubscribeError 模式互斥,自动模式下不能进行手动操作
NIMNetCallSubscribeErrorNotMeeting NIMNetCallSubscribeError 非会议模式不能进行任何操作
NIMNetCallSubscribeErrorVideoType NIMNetCallSubscribeError 视频类型错误,需要取消之前的订阅

NIMNetCallSimulcastModel参数说明

NIMNetCallSimulcastModel多流模式参数说明

参数 类型 说明
NIMNetCallSimulcastModelSingleStream NIMNetCallSimulcastModel 单流
NIMNetCallSimulcastModelDualStream NIMNetCallSimulcastModel 双流

NIMNetCallSimulcastProfile参数说明

NIMNetCallSimulcastProfile流类型参数说明

参数 类型 说明
NIMNetCallSimulcastProfileHigh NIMNetCallSimulcastProfile 大流
NIMNetCallSimulcastProfileLow NIMNetCallSimulcastProfile 小流

音视频订阅接口

设置本地视频多流模式

设置本地视频多流模式。

/**
设置本地视频多流模式

@return 返回为0时说明接口执行成功,但是否订阅成功还得看回调结果。返回为非0时,说明接口执行异常
*/
-(NIMNetCallSubscribeError)setLocalVideoSimulcastModel:(NIMNetCallSimulcastModel)mode;
参数 类型 说明
mode NIMNetCallSimulcastModel 多流模式
[[NIMAVChatSDK sharedSDK].netCallManager setLocalVideoSimulcastModel:NIMNetCallSimulcastModelSingleStream];

设置自动发布和自动订阅

设置自动发布和自动订阅。

/**
设置视频是否自动发布,是否自动订阅;音频是否自动订阅,音频的发布是全发布的。
默认是自动发布和订阅,必须在joinChannel之前设置

@param autoPub 是否自动发布
@param autoSub 是否自动订阅
@return 返回操作类型
*/
-(NIMNetCallSubscribeError)setAutoPublish:(BOOL)autoPub autoSub:(BOOL)autoSub;
参数 类型 说明
autoPub BOOL 是否自动发布
autoSub BOOL 是否自动订阅
[[NIMAVChatSDK sharedSDK].netCallManager setAutoPublish:YES autoSub:YES];

查询是否自动发布视频

查询是否自动发布视频。

/**
查询视频当前是否为自动发布模式

@return 是否为自动发布模式
*/
-(BOOL)isAutoPublishVideo;
[[NIMAVChatSDK sharedSDK].netCallManager isAutoPublishVideo];

设置弱网条件下音视频流回退策略

设置弱网条件下音视频流回退策略 必须在启动音视频之前设置。

/**
 设置弱网条件下音视频流回退策略 必须在启动音视频之前设置

 @param option 回退策略

 @return 返回操作类型
 */
- (NIMNetCallSubscribeError)setPubishFallBack:(NIMNetCallSubscribeServerFbType)option;
[[NIMAVChatSDK sharedSDK].netCallManager setPubishFallBack:NIMNetCallSubscribeServerFbTypeAudioOnly];

发布视频流

发布视频流。

/**
发布视频流

@return 返回操作类型
*/
-(NIMNetCallSubscribeError)publishVideo;
[[NIMAVChatSDK sharedSDK].netCallManager publishVideo];
/**
本端发布视频流回调

@param errCode 0为发布成功,非0为失败
*/
-(void)onPublishVideoResult:(int)errCode;

取消发布视频流

取消发布视频流。

/**
取消发布视频流

@return 返回操作类型
*/
-(NIMNetCallSubscribeError)unpublishVideo;
[[NIMAVChatSDK sharedSDK].netCallManager unpublishVideo];
/**
本端取消发布视频流回调

@param errCode 0为取消发布成功,非0为失败
*/
-(void)onUnPublishVideoResult:(int)errCode;

查询视频当前是否为自动订阅模式

查询视频当前是否为自动订阅模式。

/**
查询视频当前是否为自动订阅模式

@return 否为自动订阅模式
*/
-(BOOL)isAutoSubscribeVideo;
[[NIMAVChatSDK sharedSDK].netCallManager isAutoSubscribeVideo];

查询音频当前是否为自动订阅模式

查询音频当前是否为自动订阅模式。

/**
查询音频当前是否为自动订阅模式

@return 否为自动订阅模式
*/
-(BOOL)isAutoSubscribeAudio;
[[NIMAVChatSDK sharedSDK].netCallManager isAutoSubscribeAudio];

订阅远端用户uid的视频流

订阅远端用户uid的视频流。

/**
订阅远端用户uid的视频流

@param uid 用户uid
@return 返回为0时说明接口执行成功,但是否订阅成功还得看回调结果。返回为非0时,说明接口执行异常中断,订阅失败
*/
-(NIMNetCallSubscribeError)subscribeVideo:(NSString *)uid profile:(NIMNetCallSimulcastProfile)profile;
参数 类型 说明
uid NSString 用户uid
profile NIMNetCallSimulcastProfile 流类型
[[NIMAVChatSDK sharedSDK].netCallManager subscribeVideo:uid];
/**
订阅视频流回调

@param errCode 0为订阅成功,非0为失败
@param uid 用户id
*/
-(void)onSubscribeVideoResult:(int)errCode uid:(NSString *)uid profile:(NIMNetCallSimulcastProfile)profile;

取消订阅远端用户uid的视频流

取消订阅远端用户uid的视频流。

/**
取消订阅远端用户uid的视频流

@param uid 用户uid
@return 返回为0时说明接口执行成功,但是否订阅成功还得看回调结果。返回为非0时,说明接口执行异常中断,订阅失败
*/
-(NIMNetCallSubscribeError)unsubscribeVideo:(NSString *)uid;
参数 类型 说明
uid NSString 用户uid
[[NIMAVChatSDK sharedSDK].netCallManager unsubscribeVideo:uid];
/**
取消订阅视频流回调

@param errCode 0为取消订阅成功,非0为失败
@param uid 用户id
*/
-(void)onUnSubscribeVideoResult:(int)errCode uid:(NSString *)uid profile:(NIMNetCallSimulcastProfile)profile;

订阅远端音频流

订阅远端音频流。

/**
订阅远端音频流

@return 返回为0时说明接口执行成功,但是否订阅成功还得看回调结果。返回为非0时,说明接口执行异常中断,订阅失败
*/
-(NIMNetCallSubscribeError)subscribeAudio;
[[NIMAVChatSDK sharedSDK].netCallManager subscribeAudio];
/**
订阅音频回调

@param errCode 0为订阅成功,非0为失败
*/
-(void)onSubscribeAudioResult:(int)errCode;

取消订阅远端音频流

取消订阅远端音频流。

/**
取消订阅远端音频流

@return 返回为0时说明接口执行成功,但是否订阅成功还得看回调结果。返回为非0时,说明接口执行异常中断,订阅失败
*/
-(NIMNetCallSubscribeError)unsubscribeAudio;
[[NIMAVChatSDK sharedSDK].netCallManager unsubscribeAudio];
/**
取消订阅音频回调

@param errCode 0为取消订阅成功,非0为失败
*/
-(void)onUnSubscribeAudioResult:(int)errCode;

远端发布视频流回调

/**
远端发布视频流回调

@param uid 用户id
*/
-(void)onRemotePublishVideoResult:(NSString *)uid profileList:(NSArray *)profileList;

远端取消发布视频流回调

/**
远端取消发布视频流回调

@param uid 用户id
*/
-(void)onRemoteUnPublishVideoResult:(NSString *)uid;