发布及订阅

本章节介绍音视频通话中音视频数据的发布及订阅控制。该功能暂时不对点对点通话开放

自动发布及订阅

API介绍

设置通话中自动订阅对端新加入成员音视频数据,及通话开启后自动发布视频数据的逻辑;音频发布由sdk控制,如果要不发音频单独使用静音接口。该接口仅限于多人通话模式,且需要在通话前设置,通话中设置失败。

API原型

参数说明

参数 类型 说明
auto_pub bool 是否自动发布视频数据,默认开启;其中音频不支持设置自动发布功能,强制发布。自动发布时,nim_vchat_unpublish_video、nim_vchat_publish_video接口会调用失败。
auto_sub bool 是否自动订阅音视频数据,默认开启;自动订阅时nim_vchat_subscribe_video、nim_vchat_unsubscribe_video、nim_vchat_subscribe_audio会调用失败。

返回值说明

返回是否调用成功

是否自动发布视频

API介绍

获取通话设置中是否自动发布视频数据

API原型

返回值说明

返回是否自动发布视频

是否自动订阅视频

API介绍

获取通话设置中是否自动订阅视频数据

API原型

返回值说明

返回是否自动订阅对端视频

是否自动订阅音频

API介绍

获取通话设置中是否自动订阅音频数据

API原型

返回值说明

返回是否自动订阅音频数据

设置发布视频流模式

API介绍

设置通话的视频流模式,当前可选单流或者双流模式。必须在通话开启钱设置,否则设置无效。

API原型

参数说明

参数 类型 所在函数 说明
video_stream_mode NIMVChatPublishVideoStreamMode 发布的视频流模式

返回值说明

返回是否调用成功

发布视频

API介绍

通话中设置自己的视频数据发布接口。该接口仅限于多人通话模式,且通话未发起时设置失败。自动发布模式下操作返回失败。

回调结果只代表本地的操作结果,远端是否成功等对应的通知kNIMVChatNotifyPublishVideoRet

API原型

参数说明

参数 类型 所在函数 说明
json_extension string 无效扩展字段。
cb function 结果回调,见nim_vchat_def.h,返回的json_extension无效。错误码见NIMVChatPubSubErrorCode
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

取消发布视频

API介绍

通话中设置自己的视频数据发布接口。该接口仅限于多人通话模式,且通话未发起时设置失败。自动发布模式下操作返回失败。

回调结果只代表本地的操作结果,远端是否成功等对应的通知kNIMVChatNotifyUnpublishVideoRet

API原型

参数说明

参数 类型 所在函数 说明
json_extension string 无效扩展字段。
cb function 结果回调,见nim_vchat_def.h,返回的json_extension无效。错误码见NIMVChatPubSubErrorCode
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

订阅视频

API介绍

通话中设置订阅某一方的视频数据,该接口仅限于多人通话模式,且通话未发起时设置失败。自动订阅模式下操作返回失败。

回调结果只代表本地的操作结果,远端是否成功等对应的通知kNIMVChatNotifySubscribeVideoRet

API原型

参数说明

参数 类型 所在函数 说明
uid string 对端用户账号
json_extension string 无效扩展字段。
cb function 结果回调,见nim_vchat_def.h,返回的json_extension无效。错误码见NIMVChatPubSubErrorCode
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

取消订阅视频

API介绍

通话中设置订阅某一方的视频数据,该接口仅限于多人通话模式,且通话未发起时设置失败。自动订阅模式下操作返回失败。

回调结果只代表本地的操作结果,远端是否成功等对应的通知kNIMVChatNotifyUnsubscribeVideoRet

API原型

参数说明

参数 类型 所在函数 说明
uid string 对端用户账号
sub bool 是否订阅视频数据
json_extension string 无效扩展字段。
cb function 结果回调,见nim_vchat_def.h,返回的json_extension无效。错误码见NIMVChatPubSubErrorCode
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

订阅音频

API介绍

通话中设置订阅音频数据,默认自动订阅。音频数据没有单独订阅某一成员的接口。通话未发起时设置失败。

回调结果只代表本地的操作结果,远端是否成功等对应的通知kNIMVChatNotifySubscribeAudioRet及kNIMVChatNotifyUnsubscribeAudioRet

API原型

参数说明

参数 类型 所在函数 说明
sub bool 是否订阅视频数据
json_extension string 无效扩展字段。
cb function 结果回调,见nim_vchat_def.h,返回的json_extension无效。错误码见NIMVChatPubSubErrorCode
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

发布订阅相关通知回调

API介绍

返回远端发布状态及本地订阅及发布的结果通知。改回调基于视频通话回调中的NIMVideoChatSessionType::kNIMVideoChatSessionTypePubSubNotify

API原型

参数说明

参数 类型 所在函数 说明
type enum kNIMVideoChatSessionTypePubSubNotify
channel_id int64 频道id。
code int 见NIMVChatPubSubErrorCode
json_extension string Json string 扩展,kNIMVChatType(NIMVChatPubSubNotifyType) 远端视频额外带有kNIMVChatUid对应对端用户账号,订阅和发布视频、远端发布视频额外带有回调对应的是kNIMVChatVideoSimulcastResList
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理。
通知类型 说明
kNIMVChatNotifyPublishVideoRet 0 本地视频发布操作的结果返回通知
kNIMVChatNotifyUnpublishVideoRet 1 本地取消视频发布操作的结果返回通知
kNIMVChatNotifyRemotePublishVideo 2 远端视频发布通知
kNIMVChatNotifyRemoteUnpublishVideo 3 远端视频停止发布通知
kNIMVChatNotifySubscribeVideoRet 4 本地订阅远端视频操作的结果返回通知
kNIMVChatNotifyUnsubscribeVideoRet 5 本地取消订阅远端视频操作的结果返回通知
kNIMVChatNotifySubscribeAudioRet 6 本地订阅远端音频操作的结果返回通知
kNIMVChatNotifyUnsubscribeAudioRet 7 本地取消订阅远端音频操作的结果返回通知

错误码

名称 错误码 说明
kNIMVChatPSErrCodeSuccess 0 成功
kNIMVChatPSErrCodeFail -1 失败
kNIMVChatPSErrCodeViewerMode -200 发布操作失败,当前为观众模式
kNIMVChatPSErrCodeAudioMode -300 视频发布操作失败,当前为音频模式
kNIMVChatPSErrCodeOptBusy -400 操作繁忙
kNIMVChatPSErrCodeAutoMode -500 模式互斥 (当前是自动发布)
kNIMVChatPSErrCodeForbid -600 操作无效,对点对模式不支持订阅相关功能
kNIMVChatPSErrCodeSubscribed -700 操作无效,视频类型冲突,需要取消之前订阅的流