直播过程控制
本章节介绍互动直播过程中网易云信提供的各种控制功能。包括互动直播控制和通用控制。 互动直播控制包括改变自己在会议中的角色(互动者/观众)、互动直播过程中切换推流地址 通用控制包括是否接收某用户的音频或视频数据等
重连接口
API介绍
在通话过程中,主动重连通话。在通话过程中有效
API原型
C++
static void Relogin(const std::string& session_id, OptCallback cb)
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void NIMVChatRelogin(string sessionid, NIMVChatOptHandler cb)
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_relogin(const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data)
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
json_extension | string | Json string 扩展,kNIMVChatSessionId |
cb | function | 回调函数 |
user_data(C) | void* | APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! |
返回值说明
调用结果返回见回调函数,连接结果监听connect回调
示例
C++
void OnOptCallback(bool ret, int code, const char *json_extension) { ... } void foo(const std::string& session_id) { nim::VChat::Relogin(session_id, &OnOptCallback); }
C#
NIMVChatOptHandler _relogin_cb = null; _relogin_cb = new NIMVChatOptHandler((ret, code, json_extension) => { if (ret) { ... } }); VChatAPI.NIMVChatRelogin(session_id,_relogin_cb);
C
void OnOptCallback(bool ret, int code, const char *json_extension, const void *user_data) { if (user_data) { ... } } typedef void(*nim_vchat_relogin)(const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); void foo() { nim_vchat_relogin func = (nim_vchat_relogin) GetProcAddress(hInst, "nim_vchat_relogin"); func("", &OnOptCallback, nullptr); }
改变自己在会议中的角色
API介绍
设置观众模式(多人模式下),全局有效(重新发起时也生效),观众模式能减少运行开销。
获取当前是否是观众模式。
API原型
C++
static void SetViewerMode(bool viewer)
static bool GetViewerMode()
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void SetViewerMode(bool viewer)
static bool GetViewerMode()
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_viewer_mode(bool viewer)
NIM_SDK_DLL_API bool nim_vchat_get_viewer_mode()
File: nim_vchat.h
参数说明
参数 | 类型 | 所在函数 | 说明 |
---|---|---|---|
viewer | bool | SetViewerMode(C/C#) nim_vchat_set_viewer_mode(C) |
是否设为观众模式。 |
返回值说明
Set函数无返回值。
Get函数返回当前是否为观众模式。
示例
C++
void foo() { nim::VChat::SetViewerMode(true); bool view = nim::VChat::GetViewerMode(); }
C#
void foo() { NIM.VChatAPI.SetViewerMode(true); bool view = NIM.VChatAPI.GetViewerMode(); }
C
typedef void(*nim_vchat_set_viewer_mode)(bool viewer); typedef bool(*nim_vchat_get_viewer_mode)(); void foo() { nim_vchat_set_viewer_mode func1 = (nim_vchat_set_viewer_mode) GetProcAddress(hInst, "nim_vchat_set_viewer_mode"); nim_vchat_get_viewer_mode func2 = (nim_vchat_get_viewer_mode) GetProcAddress(hInst, "nim_vchat_get_viewer_mode"); func1(true); bool view = func2(); }
指定某用户设置是否接收其音视频数据
API介绍
设置单个成员的音频黑名单或视频黑名单状态,使得自己能接收或不接收其音频数据或视频数据。当前通话有效(只能设置进入过房间的成员)。
API原型
C++
static void SetMemberBlacklist(const std::string& uid, bool add, bool audio, const std::string& json_extension, OptCallback cb)
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void SetMemberInBlackList(string uid, bool add, bool audio, string json_extension, NIMVChatOptHandler cb)
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_member_in_blacklist(const char *uid, bool add, bool audio, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data)
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
uid | string | 对方账号。 |
add | bool | true表示添加到黑名单,false表示从黑名单移除。 |
audio | bool | true表示音频黑名单,false表示视频黑名单。 |
json_extension | string | 无效扩展字段。 |
cb | function | 结果回调,见nim_vchat_def.h,返回的json_extension无效。 |
user_data(C) | void* | APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! |
返回值说明
无返回值。
示例
C++
void OnOptCallback(bool ret, int code, const char *json_extension) { ... } void foo() { nim::VChat::SetMemberBlacklist("uid", true, false, "", &OnOptCallback); }
C#
NIMVChatOptHandler _vediosetblacklistop = null; _vediosetblacklistop = new NIMVChatOptHandler((ret, code, json_extension, user_data) => { if (ret) { ... } }); VChatAPI.SetMemberInBlackList(id, !muted, false, "", _vediosetblacklistop, IntPtr.Zero);
C
void OnOptCallback(bool ret, int code, const char *json_extension, const void *user_data) { if (user_data) { ... } } typedef void(*nim_vchat_set_member_in_blacklist)(const char *uid, bool add, bool audio, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); void foo() { nim_vchat_set_member_in_blacklist func = (nim_vchat_set_member_in_blacklist) GetProcAddress(hInst, "nim_vchat_set_member_in_blacklist"); func("uid", true, true, "", &OnOptCallback, nullptr); }
将自己静音
API介绍
将自己静音:设置是否发送本地音频流数据。全局有效,重新发起会话时也生效。此开关打开音频只发静音包。
获取音频静音状态。
API原型
C++
static void SetAudioMuted(bool muted)
static bool GetAudioMuteEnabled()
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void SetAudioMute(bool muted)
static bool GetAudioMuteEnabled()
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_audio_mute(bool muted)
NIM_SDK_DLL_API bool nim_vchat_audio_mute_enabled()
File: nim_vchat.h
参数说明
参数 | 类型 | 所在函数 | 说明 |
---|---|---|---|
muted | bool | SetAudioMuted(C/C#) nim_vchat_set_audio_mute(C) |
true静音,false不静音。 |
返回值说明
设置静音接口无返回值。
获取静音状态接口返回静音状态。
示例
C++
void foo() { nim::VChat::SetAudioMuted(true); bool mute = nim::VChat::GetAudioMuteEnabled(); }
C#
void foo() { NIM.VChatAPI.SetAudioMute(true); bool mute = NIM.VChatAPI.GetAudioMuteEnabled(); }
C
typedef void(*nim_vchat_set_audio_mute)(bool muted); typedef bool(*nim_vchat_audio_mute_enabled)(); void foo() { nim_vchat_set_audio_mute func1 = (nim_vchat_set_audio_mute) GetProcAddress(hInst, "nim_vchat_set_audio_mute"); nim_vchat_audio_mute_enabled func2 = (nim_vchat_audio_mute_enabled) GetProcAddress(hInst, "nim_vchat_audio_mute_enabled"); func1(true); bool mute = func2(); }
静音所有远端音频
API介绍
静音所有远端音频:设置是否播放所有远端用户的音频流数据。全局有效,重新发起会话时也生效。此开关打开音频只发静音包。只针对sdk中播放远端声音静音,不影像数据接收和录制功能。
获取音频播放静音状态。
API原型
C++
static void SetAudioPlayMuted(bool muted)
static bool GetAudioMutePlayEnabled()
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void NIMVChatSetAudioPlayMuted(bool muted)
static bool NIMVChatAudioMutePlayEnabled()
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_audio_play_mute(bool muted)
NIM_SDK_DLL_API bool nim_vchat_audio_play_mute_enabled()
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
muted | bool | true静音,false不静音。 |
返回值说明
设置静音接口无返回值。
获取静音状态接口返回静音状态。
示例
C++
void foo() { nim::VChat::SetAudioPlayMuted(true); bool mute = nim::VChat::GetAudioMuteEnabled(); }
C#
void foo() { NIM.VChatAPI.NIMVChatSetAudioPlayMuted(true); bool mute = NIM.VChatAPI.NIMVChatAudioPlayMuteEnabled(); }
C
typedef void(*nim_vchat_set_audio_play_mute)(bool muted); typedef bool(*nim_vchat_audio_play_mute_enabled)(); void foo() { nim_vchat_set_audio_play_mute func1 = (nim_vchat_set_audio_play_mute) GetProcAddress(hInst, "nim_vchat_set_audio_play_mute"); nim_vchat_audio_play_mute_enabled func2 = (nim_vchat_audio_play_mute_enabled) GetProcAddress(hInst, "nim_vchat_audio_play_mute_enabled"); func1(true); bool mute = func2(); }
切换通话模式
API介绍
设置通话模式,在更改通话模式后,通知底层。
API原型
C++
static bool SetTalkingMode(NIMVideoChatMode mode, const std::string& json_extension)
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static bool SetMode(NIMVideoChatMode mode)
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API bool nim_vchat_set_talking_mode(enum NIMVideoChatMode mode, const char *json_extension)
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
mode | enum | 音视频通话类型,见NIMVideoChatMode。 |
json_extension(C/C++) | string | 无效的扩展字段。 |
返回值说明
调用成功返回true,调用失败返回false。
示例
C++
void foo() { nim::VChat::SetTalkingMode(nim::kNIMVideoChatModeVideo, ""); }
C#
void foo() { NIM.VChatAPI.SetMode(NIM.NIMVideoChatMode.kNIMVideoChatModeAudio); }
C
typedef bool(*nim_vchat_set_talking_mode)(NIMVideoChatMode mode, const char* json_extension); void foo() { nim_vchat_set_talking_mode func = (nim_vchat_set_talking_mode) GetProcAddress(hInst, "nim_vchat_set_talking_mode"); func(nim::kNIMVideoChatModeVideo, ""); }
互动直播过程中切换推流地址
API介绍
通话中修改直播推流地址(主播有效)。
API原型
C++
static void UpdateRtmpUrl(const std::string& rtmp_url, OptCallback cb)
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void UpdateRtmpUrl(string rtmp_url, string json_extension, NIMVChatOptHandler cb)
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_update_rtmp_url(const char *rtmp_url, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data)
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
rtmp_url | string | 新的rtmp推流地址 |
json_extension(C/C#) | string | 无效扩展字段 |
cb | function | 结果回调,见nim_vchat_def.h,返回的json_extension无效。 |
user_data(C) | void* | APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! |
返回值说明
无返回值。
示例
C++
void OnOptCallback(bool ret, int code, const char *json_extension, const void *user_data) { if (user_data) { ... } } void foo() { nim::VChat::UpdateRtmpUrl("rtmp://...", &OnOptCallback); }
C#
NIMVChatOptHandler handler = new NIMVChatOptHandler((ret, code, json_extension, user_data) => { if (ret) { ... } }); void foo() { NIM.VChatAPI.UpdateRtmpUrl("rtmp://...", "", handler); }
C
void OnOptCallback(bool ret, int code, const char *json_extension, const void *user_data) { if (user_data) { ... } } typedef bool(*nim_vchat_update_rtmp_url)(const char *rtmp_url, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); void foo() { nim_vchat_update_rtmp_url func = (nim_vchat_update_rtmp_url) GetProcAddress(hInst, "nim_vchat_update_rtmp_url"); func("rtmp://...", "", &OnOptCallback, NULL); }
通用控制
指定某用户设置是否接收其音视频数据
API介绍
设置单个成员的音频黑名单或视频黑名单状态,使得自己能接收或不接收其音频数据或视频数据。当前通话有效(只能设置进入过房间的成员)。 当设置对方音频黑名单时,即静音指定用户音频:设置是否播放某个远端用户的音频流数据。
API原型
C++
static void SetMemberBlacklist(const std::string& uid, bool add, bool audio, const std::string& json_extension, OptCallback cb)
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void SetMemberInBlackList(string uid, bool add, bool audio, string json_extension, NIMVChatOptHandler cb)
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_member_in_blacklist(const char *uid, bool add, bool audio, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data)
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
uid | string | 对方账号。 |
add | bool | true表示添加到黑名单,false表示从黑名单移除。 |
audio | bool | true表示音频黑名单,false表示视频黑名单。 |
json_extension | string | 无效扩展字段。 |
cb | function | 结果回调,见nim_vchat_def.h,返回的json_extension无效。 |
user_data(C) | void* | APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! |
返回值说明
无返回值。
示例
C++
void OnOptCallback(bool ret, int code, const char *json_extension) { ... } void foo() { nim::VChat::SetMemberBlacklist("uid", true, false, "", &OnOptCallback); }
C#
NIMVChatOptHandler _vediosetblacklistop = null; _vediosetblacklistop = new NIMVChatOptHandler((ret, code, json_extension, user_data) => { if (ret) { ... } }); VChatAPI.SetMemberInBlackList(id, !muted, false, "", _vediosetblacklistop, IntPtr.Zero);
C
void OnOptCallback(bool ret, int code, const char *json_extension, const void *user_data) { if (user_data) { ... } } typedef void(*nim_vchat_set_member_in_blacklist)(const char *uid, bool add, bool audio, const char *json_extension, nim_vchat_opt_cb_func cb, const void *user_data); void foo() { nim_vchat_set_member_in_blacklist func = (nim_vchat_set_member_in_blacklist) GetProcAddress(hInst, "nim_vchat_set_member_in_blacklist"); func("uid", true, true, "", &OnOptCallback, nullptr); }
自动旋转对方画面
API介绍
设置不自动旋转对方画面,默认打开,全局有效(重新发起时也生效)。
获取自动旋转对方画面设置状态。
API原型
C++
static void SetRotateRemoteVideo(bool rotate)
static bool IsRotateRemoteVideo()
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void SetRotateRemoteVideo(bool rotate)
static bool IsRotateRemoteVideo()
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_rotate_remote_video(bool rotate)
NIM_SDK_DLL_API bool nim_vchat_rotate_remote_video_enabled()
File: nim_vchat.h
参数说明
参数 | 类型 | 所在函数 | 说明 |
---|---|---|---|
rotate | bool | SetRotateRemoteVideo(C++/C#) nim_vchat_set_rotate_remote_video(C) |
true自动旋转,false不自动旋转。 |
返回值说明
设置接口无返回值。
获取接口返回true表示自动旋转对方画面,false表示不自动旋转对方画面。
示例
C++
void foo() { nim::VChat::SetRotateRemoteVideo(true); bool rotate = nim::VChat::IsRotateRemoteVideo(); }
C#
void foo() { NIM.VChatAPI.SetRotateRemoteVideo(true); bool rotate = NIM.VChatAPI.IsRotateRemoteVideo(); }
C
typedef void(*nim_vchat_set_rotate_remote_video)(bool rotate); typedef bool(*nim_vchat_rotate_remote_video_enabled)(); void foo() { nim_vchat_set_rotate_remote_video func1 = (nim_vchat_set_rotate_remote_video) GetProcAddress(hInst, "nim_vchat_set_rotate_remote_video"); nim_vchat_rotate_remote_video_enabled func2 = (nim_vchat_rotate_remote_video_enabled) GetProcAddress(hInst, "nim_vchat_rotate_remote_video_enabled"); func1(true); bool rotate = func2(); }
互动直播主画面切换
API介绍
设置uid的用户画面为主画面,需要主播权限
API原型
C++
void SetUidAsMainPicture(const std::string& uid, const std::string& json_extension, Opt2Callback cb)
File: nim_cpp_vchat.h
Namespace: nim
Class: VChat
C#
static void NIMVChatSetUidPictureAsMain(string uid,string json_extension,NIMVChatOptHandler cb)
Namespace: NIM
Class: VChatAPI
C
NIM_SDK_DLL_API void nim_vchat_set_uid_picture_as_main(const char *uid, const char* json_extension, nim_vchat_opt_cb_func cb, const void* user_data)
File: nim_vchat.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
uid | string | 需要设置的主画面账号。 |
json_extension | string | 无效扩展字段。 |
cb | function | 结果回调,见nim_vchat_def.h,返回的json_extension无效。 |
user_data(C) | void* | APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理! |
返回值说明
设置接口无返回值。
获取接口返回true表示自动旋转对方画面,false表示不自动旋转对方画面。
示例
C++
void OnOptCallback(bool ret, int code, const char *json_extension) { ... } void foo() { nim::VChat::SetUidAsMainPicture("uid","",&OnOptCallback); }
C#
NIMVChatOptHandler _setuidpictureasmaincb = null; _setuidpictureasmaincb = new NIMVChatOptHandler((ret, code, json_extension, user_data) => { if (ret) { ... } }); void foo() { NIM.VChatAPI.NIMVChatSetUidPictureAsMain("uid","",_setuidpictureasmaincb); }
C
void OnOptCallback(bool ret, int code, const char *json_extension, const void *user_data) { if (user_data) { ... } } typedef void (*nim_vchat_set_uid_picture_as_main)(const char *uid, const char* json_extension, nim_vchat_opt_cb_func cb, const void* user_data); void foo() { nim_vchat_set_uid_picture_as_main func1 = (nim_vchat_set_uid_picture_as_main) GetProcAddress(hInst, "nim_vchat_set_uid_picture_as_main"); func1("uid","",&OnOptCallback); }