示例#1
0
        public bool startVoiceTalk()
        {
            if (isVoiceTalkEnabled()) return false;
            UInt32 dwVoiceChan = 0;
            if (comboBoxVoiceChan.SelectedIndex < 0 && m_dwAudioChanNum > 0) {
                dwVoiceChan = (UInt32)1;
            } else {
                dwVoiceChan = (UInt32)(comboBoxVoiceChan.SelectedIndex + 1);
            }
            bool bNeedCBNoEncData;
            if (0 == comboBoxCallBack.SelectedIndex) {
                bNeedCBNoEncData = false;
            } else {
                bNeedCBNoEncData = true;
            }
            m_fVoiceData = new CHCNetSDK.VOICEDATACALLBACKV30(VoiceTalkCallBack);

            //todo!!!  this should callback
            m_lVoiceTalkHandle = CHCNetSDK.NET_DVR_StartVoiceCom_V30(m_lUserID, dwVoiceChan, bNeedCBNoEncData, m_fVoiceData, IntPtr.Zero);

            if (m_lVoiceTalkHandle < 0) {
                parent.DebugInfo("Fail to start voice talk");
                return false;
            } else {
                parent.DebugInfo("NET_DVR_StartVoiceCom succeeded");
                voiceTalkEnabled = true;
                return true;
            }
        }
示例#2
0
        private void btnStartVoiceTale_Click(object sender, EventArgs e)
        {
            UInt32 dwVoiceChan = 0;

            dwVoiceChan = (UInt32)(comboBoxVoiceChan.SelectedIndex + 1);
            bool bNeedCBNoEncData;

            if (0 == comboBoxCallBack.SelectedIndex)
            {
                bNeedCBNoEncData = false;
            }
            else
            {
                bNeedCBNoEncData = true;
            }
            m_fVoiceData = new CHCNetSDK.VOICEDATACALLBACKV30(VoiceTalkCallBack);

            //todo!!!  this should callback
            m_lVoiceTalkHandle = CHCNetSDK.NET_DVR_StartVoiceCom_V30(m_lUserID, dwVoiceChan, bNeedCBNoEncData, m_fVoiceData, IntPtr.Zero);

            if (m_lVoiceTalkHandle < 0)
            {
                MessageBox.Show("Fail to start voice talk");
            }
        }
示例#3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="pCameraCfg">摄像头配置</param>
 /// <param name="pControlHandel">预览视频控件的句柄</param>
 /// <param name="pDrawStr">视频上要叠加的字符串</param>
 public CameraControl(FtpConfig pPhotoConfig, Camera pCameraCfg, IntPtr?pControlHandel)
 {
     _curPhotoConfig = pPhotoConfig;
     _cameraCfg      = pCameraCfg;
     _controlHandel  = pControlHandel;
     _drawStr        = "";
     // _drawStr = "123456kg";
     DarwString = new CHCNetSDK.DRAWFUN(cbDrawFun);
     m_voice    = new CHCNetSDK.VOICEDATACALLBACKV30(Voice);
 }
示例#4
0
        private void btnVioceTalk_Click(object sender, EventArgs e)
        {
            if (m_bTalk == false)
            {
                //开始语音对讲 Start two-way talk
                CHCNetSDK.VOICEDATACALLBACKV30 VoiceData = new CHCNetSDK.VOICEDATACALLBACKV30(VoiceDataCallBack);//预览实时流回调函数

                lVoiceComHandle = CHCNetSDK.NET_DVR_StartVoiceCom_V30(m_lUserID, 1, true, VoiceData, IntPtr.Zero);
                //bNeedCBNoEncData [in]需要回调的语音数据类型:0- 编码后的语音数据,1- 编码前的PCM原始数据

                if (lVoiceComHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_StartVoiceCom_V30 failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                    btnVioceTalk.Text = "Stop Talk";
                    m_bTalk           = true;
                }
            }
            else
            {
                //停止语音对讲 Stop two-way talk
                if (!CHCNetSDK.NET_DVR_StopVoiceCom(lVoiceComHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_StopVoiceCom failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                    btnVioceTalk.Text = "Start Talk";
                    m_bTalk           = false;
                }
            }
        }
示例#5
0
 private void menuSound_Click(object sender, EventArgs e)
 {
     if (m_bTalk)
     {
         CHCNetSDK.NET_DVR_StopVoiceCom(lVoiceComHandle);
         menuSound.Text = "开启声音";
         m_bTalk        = false;
     }
     else
     {
         CHCNetSDK.VOICEDATACALLBACKV30 VoiceData = new CHCNetSDK.VOICEDATACALLBACKV30(VoiceDataCallBack);//预览实时流回调函数
         lVoiceComHandle = CHCNetSDK.NET_DVR_StartVoiceCom_V30(m_lUserID, 1, true, VoiceData, IntPtr.Zero);
         //bNeedCBNoEncData [in]需要回调的语音数据类型:0- 编码后的语音数据,1- 编码前的PCM原始数据
         menuSound.Text = "关闭声音";
         if (lVoiceComHandle < 0)
         {
             iLastErr = CHCNetSDK.NET_DVR_GetLastError();
             str      = "声音开启错误, 进入静音模式";
             MessageBox.Show(str);
         }
         m_bTalk = true;
     }
 }
示例#6
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.L))
        {
            Login();
        }

        if (Input.GetKeyDown(KeyCode.T))
        {
            //开始语音对讲 Start two-way talk
            CHCNetSDK.VOICEDATACALLBACKV30 VoiceData = new CHCNetSDK.VOICEDATACALLBACKV30(VoiceDataCallBack);//预览实时流回调函数

            lVoiceComHandle = CHCNetSDK.NET_DVR_StartVoiceCom_V30(m_lUserID, 1, true, VoiceData, IntPtr.Zero);
            //bNeedCBNoEncData [in]需要回调的语音数据类型:0- 编码后的语音数据,1- 编码前的PCM原始数据

            if (lVoiceComHandle < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_StartVoiceCom_V30 failed, error code= " + iLastErr;
                Debug.Log(str);
                return;
            }
        }

        if (Input.GetKeyDown(KeyCode.S))
        {
            //停止语音对讲 Stop two-way talk
            if (!CHCNetSDK.NET_DVR_StopVoiceCom(lVoiceComHandle))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_StopVoiceCom failed, error code= " + iLastErr;
                Debug.Log(str);
                return;
            }
        }
    }
示例#7
0
        private void Play(TreeNode selected)
        {
            //1、登录
            //string DVRIPAddress = "172.16.1." + (140 + Convert.ToInt16(selected.Tag)); //设备IP地址或者域名
            string DVRIPAddress  = selected.Tag.ToString(); //Int16 DVRPortNumber = Int16.Parse(textBoxPort.Text);//设备服务端口号
            Int16  DVRPortNumber = 8000;
            string DVRUserName   = "******";                 //设备登录用户名
            string DVRPassword   = "******";                 //设备登录密码

            CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
            //登录设备 Login the device
            m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
            if (m_lUserID < 0)
            {
                //鼠标恢复
                this.Cursor = Cursors.Arrow;
                iLastErr    = CHCNetSDK.NET_DVR_GetLastError();
                str         = "错误码 = " + iLastErr + ",无法连接到ip:" + DVRIPAddress + "。\n原因可能为:录播摄像头断电或网络线路故障"; //登录失败,输出错误号
                MessageBox.Show(str);
                return;
            }
            else
            {
                //登录成功
                Btn_enable(1);
                //2、播放
                //关闭预览与语音
                if (m_lRealHandle > 0 || m_bTalk)
                {
                    //停止语音对讲 Stop two-way talk
                    CHCNetSDK.NET_DVR_StopVoiceCom(lVoiceComHandle);
                    CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
                    m_lRealHandle = -1;
                    m_bTalk       = false;
                }
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd        = RealPlayWnd.Handle; //预览窗口
                lpPreviewInfo.lChannel        = 1;                  //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 0;                  //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;                  //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;               //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 1;                  //播放库播放缓冲区最大缓冲帧数
                lpPreviewInfo.byProtoType     = 0;
                lpPreviewInfo.byPreviewMode   = 0;

                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数
                }

                IntPtr pUser = new IntPtr();//用户数据

                //打开预览 Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "预览失败, error code= " + iLastErr; //预览失败,输出错误号
                    //鼠标恢复
                    this.Cursor = Cursors.Arrow;
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                    //鼠标恢复
                    this.Cursor = Cursors.Arrow;
                    //预览成功
                    //3、开启声音
                    //开始语音对讲 Start two-way talk
                    VoiceData = new CHCNetSDK.VOICEDATACALLBACKV30(VoiceDataCallBack);//预览实时流回调函数

                    lVoiceComHandle = CHCNetSDK.NET_DVR_StartVoiceCom_V30(m_lUserID, 1, true, VoiceData, IntPtr.Zero);
                    //bNeedCBNoEncData [in]需要回调的语音数据类型:0- 编码后的语音数据,1- 编码前的PCM原始数据

                    if (lVoiceComHandle < 0)
                    {
                        iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        str      = "声音开启错误, 进入静音模式。\n此为电脑系统环境问题,无法修复";
                        MessageBox.Show(str);
                    }
                    m_bTalk = true;
                }
            }
        }