private void btn_beauty_Click(object sender, EventArgs e) { if (_set_custom_videocb == null) { _set_custom_videocb = new NIMVChatOptHandler((ret, code, json) => { if (ret) { beauty_ = !beauty_; Action action = () => { if (beauty_) { btn_beauty.Text = "美颜(关)"; } else { btn_beauty.Text = "美颜(开)"; } }; this.Invoke(action); } //ret true //设置成功 }); } NIM.VChatAPI.SetCustomData(false, !beauty_, "", _set_custom_videocb); }
void MultiVChatForm_Load(object sender, EventArgs e) { _multiVChatFormGraphics_pb01 = pb_multivchat_01.CreateGraphics(); _multiVChatFormGraphics_pb02 = pb_multivchat_02.CreateGraphics(); _multiVChatFormGraphics_pb03 = pb_multivchat_03.CreateGraphics(); _multiVChatFormGraphics_pb04 = pb_multivchat_04.CreateGraphics(); _vchatHandlers.onSessionConnectNotify = (channel_id, code, record_addr, record_file) => { if (code == 200) { StartDevices(); } else { NIM.VChatAPI.End(); } }; NIM.VChatAPI.SetSessionStatusCb(_vchatHandlers); //注册音频接收回调 DeviceAPI.SetAudioReceiveDataCb(AudioDataReceiveCallBack, null); //注册视频接收回调 DeviceAPI.SetVideoReceiveDataCb(VideoDataReceiveCallBack, null); //注册视频捕获回调 DeviceAPI.SetVideoCaptureDataCb(VideoDataCaptureCallBack, null); //启动设备在MultimediaHandler onSessionConnectNotify回调通知中 // StartDevices(); _audiosetblacklistop = new NIMVChatOptHandler(AudioSetBlackListOP); }
/// <summary> /// 音视频通话重新连接,用于底层链接在上层认为异常时尝试重连 /// </summary> /// <param name="json_extension">可扩展添加kNIMVChatSessionId,用于指定对应的通话</param> /// <param name="cb">操作结果的回调函数,当通话通话不存在或通话</param> public static void NIMVChatRelogin(string sessionid, NIMVChatOptHandler cb) { NIMVChatInfo vchatinfo = new NIMVChatInfo(); vchatinfo.SessionId = sessionid; string json_extension = vchatinfo.Serialize(); var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_relogin(json_extension, VChatNormalOptCb, ptr); }
void SetVChatCallback() { //注册音频接收回调 DeviceAPI.SetAudioReceiveDataCb(AudioDataReceiveCallBack, null); //注册视频接收回调 DeviceAPI.SetVideoReceiveDataCb(VideoDataReceiveCallBack, null); //注册视频捕获回调 DeviceAPI.SetVideoCaptureDataCb(VideoDataCaptureCallBack, null); _audiosetblacklistop = new NIMVChatOptHandler(AudioSetBlackListOP); }
private void cb_setquality_SelectedIndexChanged(object sender, EventArgs e) { _setvideoqualitycb = new NIMVChatOptHandler((ret, code, json) => { //ret true //设置成功 }); NIMVChatVideoQuality quality = (NIMVChatVideoQuality)((ComboBox)sender).SelectedItem; NIM.VChatAPI.SetVideoQuality(quality, "", _setvideoqualitycb); }
/// <summary> /// 音视频网络探测接口,需要在sdk初始化时带上app key /// </summary> /// <param name="json_extension">扩展参数,允许用户设置探测时间限制kNIMNetDetectTimeLimit,及探测类型kNIMNetDetectType</param> /// <param name="cb">操作结果的回调函数</param> /// <returns>探测任务id</returns> /// 回调函数json_extension keys: /// "task_id":uint64 任务id /// "loss":int 丢包率百分比 /// "rttmax":int rtt 最大值 /// "rttmin":int rtt 最小值 /// "rttavg":int rtt 平均值 /// "rttmdev":int rtt 偏差值 mdev /// "detailinfo":string 扩展信息 /// </param> /// <param name="user_data"></param> /// <returns>探测任务id /// 200:成功 /// 0:流程错误 /// 400:非法请求格式 /// 417:请求数据不对 /// 606:ip为内网ip /// 607:频率超限 /// 20001:探测类型错误 /// 20002:ip错误 /// 20003:sock错误 /// </returns> public static ulong DetectNetwork(NIMVChatNetDetectJsonEx json, NIMVChatOptHandler cb) { string json_str = ""; if (json != null) { json_str = json.Serialize(); } var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); var ret = VChatNativeMethods.nim_vchat_net_detect(json_str, VChatNormalOptCb, ptr); return(ret); }
private void lv_members_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { if (lv_members.SelectedItems.Count > 0) { select_id_ = lv_members.SelectedItems[0].Text; if (select_id_.Equals(NIMDemo.Helper.UserHelper.SelfId)) { return; } bool isBlacklist = _audioblacklist.Contains(select_id_); if (cm_item1 == null) { cm_item1 = new MenuItem(); cm.MenuItems.Add(cm_item1); _audiosetblacklistop = new NIMVChatOptHandler( (ret, code, json_extension) => { if (ret) { bool blackmember = _audioblacklist.Contains(select_id_); if (!blackmember) { Action action = () => { rtb_multichat_info.Text += select_id_ + "加入音频黑名单成功\n"; _audioblacklist.Add(select_id_); }; this.BeginInvoke(action); } else { Action action = () => { rtb_multichat_info.Text += select_id_ + "取消音频黑名单成功\n"; _audioblacklist.Remove(select_id_); }; this.BeginInvoke(action); } } else { } } ); cm_item1.Click += (o, ex) => { isBlacklist = _audioblacklist.Contains(select_id_); VChatAPI.SetMemberInBlackList(select_id_, !isBlacklist, true, "", _audiosetblacklistop); }; } cm_item1.Text = isBlacklist ? "取消音频黑名单" : "加入音频黑名单"; bool muted = _vedioblacklist.Contains(select_id_); if (cm_item2 == null) { cm_item2 = new MenuItem(); cm.MenuItems.Add(cm_item2); _vediosetblacklistop = new NIMVChatOptHandler( (ret, code, json_extension) => { if (ret) { bool blackmember = _vedioblacklist.Contains(select_id_); if (!blackmember) { Action action = () => { rtb_multichat_info.Text += select_id_ + "加入视频黑名单成功\n"; _vedioblacklist.Add(select_id_); }; this.BeginInvoke(action); } else { Action action = () => { rtb_multichat_info.Text += select_id_ + "取消视频黑名单成功\n"; _vedioblacklist.Remove(select_id_); }; this.BeginInvoke(action); } } else { Action action = () => { MessageBox.Show("操作失败"); //_vedioblacklist.Remove(id); }; this.BeginInvoke(action); } } ); cm_item2.Click += (o, ex) => { muted = _vedioblacklist.Contains(select_id_); VChatAPI.SetMemberInBlackList(select_id_, !muted, false, "", _vediosetblacklistop); }; } cm_item2.Text = muted ? "取消视频黑名单" : "加入视频黑名单"; cm.Show(lv_members, e.Location); } } }
/// <summary> /// 互动直播设置uid为房间主画面 /// </summary> /// <param name="uid">用户uid</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">回调函数</param> public static void NIMVChatSetUidPictureAsMain(string uid, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_uid_picture_as_main(uid, json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 通话中修改视频编码模式 /// </summary> /// <param name="mode">选用的策略模式</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">回调函数,code 见</param> public static void NIMVChatSelectVideoAdaptiveStrategy(NIMVChatVideoEncodeMode mode, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_select_video_adaptive_strategy(mode, json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 实时设置视频发送帧率上限 /// </summary> /// <param name="frame_rate">帧率类型 见NIMVChatVideoFrameRate定义</param> /// <param name="json_extension">json_extension 无效备用</param> /// <param name="cb">cb 结果回调</param> /// <returns>无返回值</returns> public static void SetFrameRate(NIMVChatVideoFrameRate frame_rate, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_frame_rate(frame_rate, json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 通话中修改发送画面分辨率,发送的分辨率限制只对上限限制,如果数据源小于发送分辨率,不会进行放大 /// </summary> /// <param name="video_quality"> 分辨率模式</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">结果回调,返回的json_extension无效</param> /// <returns>无返回值</returns> public static void SetVideoQuality(NIMVChatVideoQuality video_quality, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_video_quality(video_quality, json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 通话中修改直播推流地址(主播有效) /// </summary> /// <param name="rtmp_url">新的rtmp推流地址</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">结果回调,返回的json_extension无效</param> /// <returns>无返回值</returns> public static void UpdateRtmpUrl(string rtmp_url, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_update_rtmp_url(rtmp_url, json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 通话中修改自定义音视频数据模式 /// </summary> /// <param name="custom_audio">true:表示使用自定义的音频数据.false:表示不使用</param> /// <param name="custom_video">true:表示使用自定义的视频数据.false:表示不使用</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">cb 结果回调</param> /// <returns>无返回值</returns> public static void SetCustomData(bool custom_audio, bool custom_video, string json_extension, NIMVChatOptHandler cb) { #if NIMAPI_UNDER_WIN_DESKTOP_ONLY || UNITY_STANDALONE_WIN var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_custom_data(custom_audio, custom_video, json_extension, VChatNormalOptCb, ptr); #else #endif }
/// <summary> /// 设置单个成员的黑名单状态,即是否显示对方的音频或视频数据,当前通话有效(只能设置进入过房间的成员) /// </summary> /// <param name="uid">uid成员 account</param> /// <param name="add">true:添加到黑名单.false:从黑名单中移除</param> /// <param name="audio">ture:表示音频黑名单.false:表示视频黑名单</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">返回的json_extension无效</param> /// <returns>无返回值</returns> public static void SetMemberInBlackList(string uid, bool add, bool audio, string json_extension, NIMVChatOptHandler cb) { #if NIMAPI_UNDER_WIN_DESKTOP_ONLY || UNITY_STANDALONE_WIN var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_member_in_blacklist(uid, add, audio, json_extension, VChatNormalOptCb, ptr); #else #endif }
/// <summary> /// 通话中修改自定义音视频数据模式 /// </summary> /// <param name="custom_audio">true:表示使用自定义的音频数据.false:表示不使用</param> /// <param name="custom_video">true:表示使用自定义的视频数据.false:表示不使用</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">cb 结果回调</param> /// <returns>无返回值</returns> public static void SetCustomData(bool custom_audio, bool custom_video, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_custom_data(custom_audio, custom_video, json_extension, VChatNormalOptCb, ptr); }
/// <summary> /// 设置单个成员的黑名单状态,即是否显示对方的音频或视频数据,当前通话有效(只能设置进入过房间的成员) /// </summary> /// <param name="uid">uid成员 account</param> /// <param name="add">true:添加到黑名单.false:从黑名单中移除</param> /// <param name="audio">ture:表示音频黑名单.false:表示视频黑名单</param> /// <param name="json_extension">无效扩展字段</param> /// <param name="cb">返回的json_extension无效</param> /// <returns>无返回值</returns> public static void SetMemberInBlackList(string uid, bool add, bool audio, string json_extension, NIMVChatOptHandler cb) { var ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb); VChatNativeMethods.nim_vchat_set_member_in_blacklist(uid, add, audio, json_extension, VChatNormalOptCb, ptr); }