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; } }
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"); } }
/// <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); }
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; } } }
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; } }
// 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; } } }
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; } } }