/// <summary> /// 初始化函数 /// </summary> /// <param name="strServerIP">视频IP</param> /// <param name="iChannel">通道号</param> /// <param name="strUserName">用户名</param> /// <param name="strPsw">密码</param> /// <param name="strPath">抓图存储路径 如:\\LoadWeightPic\\FrontImage.jpg</param> public void Initialize(string strServerIP, int iChannel, string strUserName, string strPsw, string strPath) { try { if (IsLogin) { disConnect = new fDisConnect(DisConnectEvent); DHClient.DHInit(disConnect, IntPtr.Zero); DHClient.DHSetEncoding(LANGUAGE_ENCODING.gb2312); deviceInfo = new NET_DEVICEINFO(); int iLoginError = 0; iLogin = DHClient.DHLogin(strServerIP, ushort.Parse("37777"), strUserName, strPsw, out deviceInfo, out iLoginError); IsLogin = false; } _strPath = strPath; _strServerIP = strServerIP; _iChannel = iChannel; iRealPlay = DHClient.DHRealPlay(iLogin, _iChannel, this.Pic.Handle); } catch (Exception ex) { Log.WriteLog("大华视频显示控件-初始化:", ex); } }
public override void Play(bool isAsync) { lock (_StatusLock) { if (this._Status != VideoStatus.Playing) { if (VideoSource == null) { return; } if (!this.TitlePanel.InvokeRequired) //显示视频头 { this.Caption = VideoSource.VideoName; this.TitlePanel.Visible = ShowTitle; } //初始化设备 if (Init() == false) { return; } //启动监视 m_realPlayH = DHClient.DHRealPlay(m_nLoginID, VideoSource.Channel, this.video.Handle); if (m_realPlayH == 0) { return; } this._Status = VideoStatus.Playing; } } }
//将视频放大和缩小并在窗体上居中显示 private void Pic_Click(object sender, EventArgs e) { Control form = GetParent(this); if (!bolAmplified) { this.Width = this.Width * _iAmplify; this.Height = this.Height * _iAmplify; iRelativeT = this.Top; iRelativeL = this.Left; parent = this.Parent; parent.Controls.Remove(this); form.Controls.Add(this); //放大后图片居中 this.Left = (Parent.ClientSize.Width - this.Width) / 2; this.Top = (Parent.ClientSize.Height - this.Height) / 2; } else { form.Controls.Remove(this); parent.Controls.Add(this); this.Width = this.Width / _iAmplify; this.Height = this.Height / _iAmplify; //再次点击回到原处 this.Left = iRelativeL; this.Top = iRelativeT; } this.BringToFront(); bolAmplified = !bolAmplified; iRealPlay = DHClient.DHRealPlay(iLogin, _iChannel, this.Pic.Handle); }
private void RealPlay(CarPlateDevice device) { if (device != null && device.m_nLoginID != 0) { //启动监视 device.m_realPlayH = DHClient.DHRealPlay(device.m_nLoginID, device.VideoID, this.pictureBoxImg.Handle); } }
private void play(int canal) { bool canStop = DHClient.DHStopRealPlay(pRealPlayHandle[this.channel]); picPlayMain.Refresh(); pRealPlayHandle[canal] = DHClient.DHRealPlay(pLoginID, canal, picPlayMain.Handle); this.channel = canal; }
public bool Init(CameraData _cameraData) { cameraData = _cameraData; server.start(Convert.ToInt32(cameraData.Code)); disConnect = new fDisConnect(DisConnectEvent); DHClient.DHInit(disConnect, IntPtr.Zero); DHClient.DHSetEncoding((int)LANGUAGE_ENCODING.gb2312);//字符编码格式设置,默认为gb2312字符编码,如果为其他字符编码请设置 pLoginID = DHClient.DHLogin(cameraData.IP, (ushort)cameraData.Port, cameraData.UserName, cameraData.Pwd, out deviceInfo, out error); // cameraData.control.Text = pLoginID + ""; if (pLoginID != 0) { // (cameraData.control as UserControl).Text = pLoginID.ToString(); pPlayBackHandle = new int[deviceInfo.byChanNum]; //画面按钮有效性控制 pRealPlayHandle = null; //for (int i = 0; i < deviceInfo.byChanNum; i++) //{ // cmbChannelSelect.Items.Add(i.ToString()); // //cmbChannelSelect.Items.Add((i+1).ToString()); //} NET_SDK_CLIENTINFO lsc = new NET_SDK_CLIENTINFO(); lsc.lChannel = deviceInfo.byChanNum; //预览的通道 lsc.streamType = 1; // 码流 lsc.hPlayWnd = cameraData.Handle; //pictureBox.Handle lLiveHandle = (IntPtr)DHClient.DHRealPlay(pLoginID, 0, lsc.hPlayWnd); //ID 通道 ,Picture句柄 IntPtr userdata = (IntPtr)Convert.ToInt32(_cameraData.Code); DHClient.DHSetRealDataCallBack((int)lLiveHandle, fd, userdata); // DHPlay.PLAY_OpenStream(tongdao, IntPtr.Zero, 0, (UInt32)900 * 1024); //播放的部分 //bool b2 = DHPlay.DHPlayControl(PLAY_COMMAND.OpenStream, tongdao, IntPtr.Zero, 0, 900 * 1024); //DHPlay.DHSetStreamOpenMode(tongdao, PLAY_MODE.STREAME_FILE); //DHPlay.DHPlayControl(0, tongdao, _cameraData.control.Handle); return(true); } else { return(false); } }
private void RealPlay(bool a, int b) { if (a) { switch (b) { case 0: //通道0的实时监视 pRealPlayHandle = DHClient.DHRealPlay(pLoginID, 0, picRealPlay1.Handle); picRealPlay1.Visible = true; break; case 1: //通道1的实时监视 pRealPlayHandle = DHClient.DHRealPlay(pLoginID, 1, picRealPlay2.Handle); picRealPlay2.Visible = true; break; case 2: //通道2的实时监视 pRealPlayHandle = DHClient.DHRealPlay(pLoginID, 2, picRealPlay3.Handle); picRealPlay3.Visible = true; break; case 3: //通道3的实时监视 pRealPlayHandle = DHClient.DHRealPlay(pLoginID, 3, picRealPlay4.Handle); picRealPlay4.Visible = true; break; case 4: //通道4的实时监视 pRealPlayHandle = DHClient.DHRealPlay(pLoginID, 4, picRealPlay5.Handle); picRealPlay5.Visible = true; break; } } else { DHClient.DHStopRealPlay(pRealPlayHandle); picRealPlay1.Refresh(); } }
/// <summary> /// 设备2实时监视处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRealPlay2_Click(object sender, EventArgs e) { //实时监控开始:注意realPlayHandle2和pLoginID1 realPlayHandle2 = DHClient.DHRealPlay(pLoginID2, 1, picRealPlay2.Handle); }
/// <summary> /// 设备1实时播放处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRealPlay1_Click(object sender, EventArgs e) { //实时监控开始:注意realPlayHandle1和pLoginID1 realPlayHandle1 = DHClient.DHRealPlay(pLoginID1, 0, picRealPlay1.Handle); }
//摄像头视频显示 private void RealPlay() { try { disConnect = new fDisConnect(DisConnectEvent); DHClient.DHInit(disConnect, IntPtr.Zero); DHClient.DHSetEncoding(LANGUAGE_ENCODING.gb2312);//字符编码格式设置,默认为gb2312字符编码,如果为其他字符编码请设置 pRealPlayHandle = null; deviceInfo = new NET_DEVICEINFO(); int error = 0; pLoginID = DHClient.DHLogin(Program.g_localVedioIp, ushort.Parse(Program.g_localVedioPort), Program.g_localVadioUsername, Program.g_localVadioPassword, out deviceInfo, out error); if (pLoginID != 0) { pPlayBackHandle = new int[deviceInfo.byChanNum]; //画面按钮有效性控制 pRealPlayHandle = null; pRealPlayHandle = new int[deviceInfo.byChanNum]; for (int i = 0; i < deviceInfo.byChanNum; i++) { switch (i) { case 0: //通道0的实时监视 pictureBox17.Invoke((MethodInvoker) delegate { pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox17.Handle); }); break; case 1: //通道1的实时监视 pictureBox18.Invoke((MethodInvoker) delegate { pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox18.Handle); }); break; case 2: //通道2的实时监视 pictureBox19.Invoke((MethodInvoker) delegate { pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox19.Handle); }); break; case 3: //通道3的实时监视 pictureBox20.Invoke((MethodInvoker) delegate { pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox20.Handle); }); break; case 4: //通道4的实时监视 pictureBox21.Invoke((MethodInvoker) delegate { pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, pictureBox21.Handle); }); break; } } } } catch (Exception vedioError) { Program.WriteLog("调用摄像头异常:" + vedioError.ToString()); } }
/// <summary> /// 实时播放按钮按下 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRealPlay_Click(object sender, EventArgs e) { string strStart = StringUtil.ConvertString("实时监视开始"); string strStop = StringUtil.ConvertString("实时监视结束"); if (btnRealPlay.Text.Equals(strStart)) { btnRealPlay.Text = strStop; pRealPlayHandle = new int[deviceInfo.byChanNum]; cmbChannelSelect.Items.Clear(); for (int i = 0; i < deviceInfo.byChanNum; i++) { cmbChannelSelect.Items.Add(i.ToString()); } cmbChannelSelect.SelectedIndex = 0; for (int i = 0; i < deviceInfo.byChanNum; i++) { switch (i) { case 0: //通道0的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay0.Handle); break; case 1: //通道1的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay1.Handle); break; case 2: //通道2的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay2.Handle); break; case 3: //通道3的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay3.Handle); break; case 4: //通道4的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay4.Handle); break; case 5: //通道5的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay5.Handle); break; case 6: //通道6的实时监视 pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay6.Handle); break; case 7: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay7.Handle); break; case 8: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay8.Handle); break; case 9: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay9.Handle); break; case 10: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay10.Handle); break; case 11: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay11.Handle); break; case 12: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay12.Handle); break; case 13: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay13.Handle); break; case 14: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay14.Handle); break; case 15: pRealPlayHandle[i] = DHClient.DHRealPlay(pLoginID, i, picRealPlay15.Handle); break; } } gpbPTZControl.Enabled = true; } else { btnRealPlay.Text = strStart; cmbChannelSelect.Items.Clear(); for (int i = 0; i < deviceInfo.byChanNum; i++) { DHClient.DHStopRealPlay(pRealPlayHandle[i]); } picRealPlay0.Refresh(); picRealPlay1.Refresh(); picRealPlay2.Refresh(); picRealPlay3.Refresh(); picRealPlay4.Refresh(); picRealPlay5.Refresh(); picRealPlay6.Refresh(); picRealPlay7.Refresh(); picRealPlay8.Refresh(); picRealPlay9.Refresh(); picRealPlay10.Refresh(); picRealPlay11.Refresh(); picRealPlay12.Refresh(); picRealPlay13.Refresh(); picRealPlay14.Refresh(); picRealPlay15.Refresh(); gpbPTZControl.Enabled = false; } }