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);
        }
예제 #3
0
        /// <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);
        }
예제 #6
0
        /// <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);
                }
            }
        }
예제 #8
0
        /// <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);
        }
예제 #9
0
        /// <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);
        }
예제 #10
0
        /// <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);
        }
예제 #11
0
        /// <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);
        }
예제 #12
0
        /// <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);
        }
예제 #13
0
        /// <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
        }
예제 #14
0
        /// <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
        }
예제 #15
0
        /// <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);
        }
예제 #16
0
        /// <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);
        }