private void Init() { _loginedDeviceDict = new ConcurrentDictionary <string, DevLoginModel>(); _HCRealDataCallback = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); bool isInit = CHCNetSDK.NET_DVR_Init(); }
public async void Preview() { // if (App.DataCamera[this.Postion].m_lRealHandle > 0) CHCNetSDK.NET_DVR_StopRealPlay(App.DataCamera[this.Postion].m_lRealHandle); await Task.Delay(50); //LocationMedia media = new LocationMedia(App.DataCamera[this.Postion].rtsp); // media.ParsedChanged += media_ParsedChanged; // this.myVlcControl.Media = media; CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); lpClientInfo.lChannel = App.DataCamera[this.Postion].channel; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码 m_ptrRealHandle = pictureBox1.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); App.DataCamera[this.Postion].m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(App.DataCamera[this.Postion].m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); if (App.DataCamera[this.Postion].m_lRealHandle == -1) { uint nError = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("Lỗi không thể truy cập camera"); return; } }
private void preview() { try { this.Invoke((EventHandler) delegate { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = pictureBox1.Handle; // 预览窗口 lpPreviewInfo.lChannel = 1; // 设置设备通道 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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); if (m_lRealHandle < 0) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 // MessageBox.Show(str); return; } else { //预览成功 //btnPreview.Text = "Stop Live View"; } } ); } catch { } }
public void ShowVideo() { if (m_lUserID < 0) { MessageBox.Show("Please login the device firstly"); return; } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = image.Handle; //预览窗口 lpPreviewInfo.lChannel = Int16.Parse("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 = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 MessageBox.Show(str); return; } } }
public int startPreview(int m_lUserID, int lChannel) { int RealHandle = -1; lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.lChannel = lChannel; //预览的设备通道 the device channel number 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- 阻塞取流 IntPtr pUser = IntPtr.Zero; //用户数据 user data if (previewMode == 0) { lpPreviewInfo.hPlayWnd = m_ptrRealHandle;//预览窗口 live view window RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser); } else { lpPreviewInfo.hPlayWnd = IntPtr.Zero; //预览窗口 live view window RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 real-time stream callback function //3.实时预览 RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser); } return(RealHandle); }
public void Preview(System.Windows.Forms.PictureBox RealPlayWnd) { if (m_lUserID < 0) { return; } if (m_lRealHandle < 0) { 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(); //用户数据 m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); //打开预览 Start live view } }
/// <summary> /// 实时视频信息 /// </summary> private void GetRealPlay() { try { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = pictureBox1.Handle; //预览窗口 lpPreviewInfo.lChannel = SystemClass.lChannel; //预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- 阻塞取流 CHCNetSDK.REALDATACALLBACK 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) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); } } catch (Exception ex) { CommonalityEntity.WriteTextLog(ex.Message); } }
private void btnPreview_Click() { CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); int channel = 1; lpClientInfo.lChannel = channel; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; if (m_iPreviewType == 0) // use by callback { lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码 m_ptrRealHandle = pictureBox1.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); } else if (1 == m_iPreviewType) { lpClientInfo.hPlayWnd = pictureBox1.Handle; IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1); } if (m_lRealHandle == -1) { // uint nError = CHCNetSDK.NET_DVR_GetLastError(); // DebugInfo("NET_DVR_RealPlay fail %d!"); return; } }
public void Preview() { CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); lpClientInfo.lChannel = this.Camera.channel; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; if (this.Camera.m_iPreviewType == 0) // use by callback { lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码 m_ptrRealHandle = pictureBox1.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); this.Camera.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(this.Camera.m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); } else if (1 == this.Camera.m_iPreviewType) { m_ptrRealHandle = pictureBox1.Handle; IntPtr pUser = new IntPtr(); this.Camera.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(this.Camera.m_lUserID, ref lpClientInfo, null, pUser, 1); } if (this.Camera.m_lRealHandle == -1) { uint nError = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("Lỗi không thể truy cập camera"); return; } }
private void btnPreview_Click() { CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); int channel = 1; lpClientInfo.lChannel = channel; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; if (m_iPreviewType == 0) // use by callback { lpClientInfo.hPlayWnd = IntPtr.Zero;// todo!!! 这边应该做2中情况考虑去编写代码 m_ptrRealHandle = pictureBox1.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); } else if (1 == m_iPreviewType) { lpClientInfo.hPlayWnd = pictureBox1.Handle; IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1); } if (m_lRealHandle == -1) { // uint nError = CHCNetSDK.NET_DVR_GetLastError(); // DebugInfo("NET_DVR_RealPlay fail %d!"); return; } }
public void Preview() { if (App.DataCamera[this.postion].m_lRealHandle >= 0) { CHCNetSDK.NET_DVR_StopRealPlay(App.DataCamera[this.postion].m_lRealHandle); } CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); lpClientInfo.lChannel = App.DataCamera[this.postion].channel; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; // App.DataCamera[this.postion].m_iPreviewType = 1; lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码 m_ptrRealHandle = pictureBox1.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); App.DataCamera[this.postion].m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(App.DataCamera[this.postion].m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); if (App.DataCamera[this.postion].m_lRealHandle == -1) { uint nError = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("Lỗi không thể truy cập camera"); return; } }
private void VideoInitAndPriview() { if (sbtnLook.Text == "预览") { m_bInitSDK = CHCNetSDK.NET_DVR_Init(); if (m_bInitSDK == false) { //MessageBox.Show("设备初始化失败!"); return; } m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo); if (m_lUserID == -1) { MessageBox.Show("登录失败!"); return; } else { //MessageBox.Show("登录成功!"); TimerStart(); //StartAlarmVideo(); CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); //摄像头 配置信息结构 lpClientInfo.lChannel = 1; lpClientInfo.lLinkMode = 0x0000; //最高位(31)为0表示主码流,为1表示子码流,0-30位表示码流连接方式: 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-音视频分开(TCP) lpClientInfo.sMultiCastIP = ""; //多播组地址 if (m_iPreviewType == 0) // use by callback { lpClientInfo.hPlayWnd = IntPtr.Zero; //播放窗口的句柄,为NULL表示不播放图象 m_ptrRealHandle = RealPlayWnd.Handle; //获取控件绑定到的窗口句柄。 RealPlayWnd显示界面 m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); // 预览回调 IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); //实时预览 } else if (1 == m_iPreviewType) { lpClientInfo.hPlayWnd = RealPlayWnd.Handle; IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1); } if (m_lRealHandle == -1) { uint nError = CHCNetSDK.NET_DVR_GetLastError(); VideoRetErrorDis(nError); //DebugInfo("NET_DVR_RealPlay fail %d!"); return; } sbtnLook.Text = "停止预览"; //this.btnPriview.Image = global::HikHelp.Properties.Resources.停止预览; } } else if (sbtnLook.Text == "停止预览") { sbtnLook.Text = "预览"; //btnPriview.Image = global::HikHelp.Properties.Resources.预览; StopPriview(); } }
/// <summary> /// 开启录像 /// </summary> /// <param name="IP"></param> /// <param name="Channel"></param> /// <returns></returns> public static int Rec(string IP, int Channel, string strDeviceID) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); //lpPreviewInfo.hPlayWnd = handle;//预览窗口 lpPreviewInfo.lChannel = Channel; //预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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 if (!userIDList.ContainsKey(IP)) { return(-1); } int m_lUserID = userIDList[IP]; //打开预览 Start live view int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); if (m_lRealHandle < 0) { } else { //录像保存路径和文件名 the path and file name to save string sVideoFileName; DateTime dt = DateTime.Now; sVideoFileName = IP + "_" + Channel + dt.ToString("yyyyMMddHHmmss") + "手动.mp4"; //预览成功 //强制I帧 Make a I frame int lChannel = Channel; //通道号 Channel number CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel); //开始录像 Start recording if (CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle, path + sVideoFileName)) { RealHandleList.Add(IP + "," + Channel + "_1", m_lRealHandle); RecInfo info = new RecInfo(sVideoFileName, dt, "手动录像"); RecDataClass.recInfo.Add(IP + "," + Channel + "_1", info); //写入数据库 RecFileList recFileList = new RecFileList(); recFileList.CameraID = strDeviceID; recFileList.RecName = sVideoFileName; recFileList.RecRecFile = path + sVideoFileName; recFileList.RecStartDate = dt.ToString("yyyy-MM-dd"); recFileList.RecStartTime = dt.ToString("HH:mm:ss"); recFileList.RecType = "1"; RecFileClass.AddStartTime(recFileList); } else { return(-1); } } return(m_lRealHandle); }
private void LivePreView() { // LoginUser(); if (m_lUserID < 0) { LoginUser(); return; } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); ovalPictureBox.Invoke(new ForTest(() => { ovalPictureBox.BackgroundImageLayout = ImageLayout.Zoom; ovalPictureBox.SizeMode = PictureBoxSizeMode.Zoom; lpPreviewInfo.hPlayWnd = ovalPictureBox.Handle; })); lpPreviewInfo.lChannel = Int16.Parse(dvrControl.dvrObject.Channel); lpPreviewInfo.dwStreamType = 0; lpPreviewInfo.dwLinkMode = 0; lpPreviewInfo.bBlocked = true; 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 = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //Ô¤ÀÀʧ°Ü£¬Êä³ö´íÎóºÅ // FailCamera(); MessageControl messageControl = new MessageControl("Fail", str); messageControl.ShowDialog(); return; } else { SetImageRight(); } //SuccessCamera(); } return; }
public void Button_Click_1(object sender, RoutedEventArgs e) { #region if (m_lUserID < 0) { MessageBox.Show("Please login the device firstly"); return; } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = image.Handle;//预览窗口 //lpPreviewInfo.hPlayWnd = ((HwndSource)PresentationSource.FromVisual(this)).Handle;//预览窗口 //lpPreviewInfo.hPlayWnd = new WindowInteropHelper(display).Handle;//预览窗口 lpPreviewInfo.lChannel = Int16.Parse("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 = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 MessageBox.Show(str); return; } else { } //SetParent(lpPreviewInfo.hPlayWnd, RealPlayWnd.Handle); //ShowWindowAsync(lpPreviewInfo.hPlayWnd, 3); } else { //停止预览 Stop live view if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_StopRealPlay failed, error code= " + iLastErr; MessageBox.Show(str); return; } m_lRealHandle = -1; } return; #endregion }
public static int RealPlay(CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo) { CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(SDKCommon.RealDataCallBack); IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, RealData, pUser, 1); return(m_lRealHandle); }
/// <summary> /// 预览硬盘录像机视频 /// </summary> /// <param name="lpClientInfo">预览参数 </param> /// <returns></returns> public static int RealPlay(int ilChannel, System.Windows.Forms.PictureBox RealPlayWnd) { CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = GetRealPlay(ilChannel, RealPlayWnd); CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, RealData, pUser, 1); return(m_lRealHandle); }
public bool ListView(Control RealPlayWnd) { if (m_lUserID < 0) { MessageBox.Show("请先登录摄像头!"); return(false); } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle; //预览窗口 lpPreviewInfo.lChannel = 1; // Int16.Parse(1);//预te览的设备通道 默认为1 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 (textBoxID.Text != "") * { * lpPreviewInfo.lChannel = -1; * byte[] byStreamID = System.Text.Encoding.Default.GetBytes(textBoxID.Text); * lpPreviewInfo.byStreamID = new byte[32]; * byStreamID.CopyTo(lpPreviewInfo.byStreamID, 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, RealData, pUser); if (m_lRealHandle < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "预览错误,错误号= " + iLastErr; //预览失败,输出错误号 MessageBox.Show(str); return(false); } else { Status = 2; //预览成功 return(true); } } Status = 0; return(false); }
public override void PreviewFun(int userID, int channel) { CrossThreadPictureBox(); if (userID < 0) { MessageBox.Show("该设备初始化登录失败!"); } if (g_lRealHandle < 0) { // m_ptrRealHandle = m_picturebox.Handle; CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); //定义预览参数 lpPreviewInfo.hPlayWnd = m_picturebox.Handle; //预览窗口句柄绑定 lpPreviewInfo.lChannel = channel + 32; //要预览的设备通道号 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 = 15; //播放库显示缓冲区最大帧数 IntPtr pUser = IntPtr.Zero; //用户数据 lpPreviewInfo.hPlayWnd = IntPtr.Zero; //预览窗口 live view window RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 real-time stream callback function g_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(userID, ref lpPreviewInfo, RealData, pUser); if (g_lRealHandle < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("预览失败,输出错误号: " + iLastErr); //预览失败,输出错误号 return; } else { CrossThreadOperationControl CrossDeleBtn = delegate() { Mainform.form1.kButtonView.Text = "停止预览"; }; Mainform.form1.kPictureBox.Invoke(CrossDeleBtn); } } else { //停止预览 Stop live view if (!CHCNetSDK.NET_DVR_StopRealPlay(g_lRealHandle)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("NET_DVR_StopRealPlay failed, error code= " + iLastErr); return; } m_picturebox.Invalidate();//刷新窗口 m_picturebox.Refresh(); g_lRealHandle = -1; StaticData.g_CameraSelectChannel = -1; CrossThreadOperationControl CrossDeleBtn = delegate() { Mainform.form1.kButtonView.Text = "预览"; }; Mainform.form1.kPictureBox.Invoke(CrossDeleBtn); } }
private void StartPreview() { if (m_lUserID < 0) { Console.WriteLine("[CCTV] - Access Error."); return; } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); if (Pb_CCTV.InvokeRequired) { Pb_CCTV.Invoke(new MethodInvoker(delegate { lpPreviewInfo.hPlayWnd = Pb_CCTV.Handle; })); } else { lpPreviewInfo.hPlayWnd = Pb_CCTV.Handle; } lpPreviewInfo.lChannel = 1; lpPreviewInfo.dwStreamType = 0; lpPreviewInfo.dwLinkMode = 1; lpPreviewInfo.bBlocked = true; lpPreviewInfo.dwDisplayBufNum = 1; lpPreviewInfo.byProtoType = 0; lpPreviewInfo.byPreviewMode = 0; if (RealData == null) { RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); } m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, IntPtr.Zero); if (m_lRealHandle < 0) { Console.WriteLine("[CCTV] - NET_DVR_RealPlay_V40 Failed : {0}", CHCNetSDK.NET_DVR_GetLastError()); } else { Console.WriteLine("[CCTV] - Start Preview."); // Event Trigger if (ModeListener != null) { ModeListener(MODE_PREVIEW); } } } //SystemEnv.ShowLogMessage("[CCTV] - RealHandle : {0}", m_lRealHandle); }
private void startvideo(String filename) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle; //预览窗口 lpPreviewInfo.lChannel = Int16.Parse(textBoxChannel.Text); //预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 = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 MessageBox.Show(str); return; } else { } //录像保存路径和文件名 the path and file name to save string sVideoFileName; /* sVideoFileName = "Record_test.mp4";*/ sVideoFileName = filename; //强制I帧 Make a I frame int lChannel = Int16.Parse(textBoxChannel.Text); //通道号 Channel number CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel); //开始录像 Start recording if (!CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle, sVideoFileName)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_SaveRealData failed, error code= " + iLastErr; return; } else { /*MessageBox.Show("开始录像");*/ } return; }
private void btnPreview_Click(object sender, System.EventArgs e) { if (m_lUserID < 0) { MessageBox.Show("Please login the device firstly"); return; } if (m_lRealHandle < 0) { 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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK 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 = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 MessageBox.Show(str); return; } else { //预览成功 btnPreview.Text = "停止预览"; } } else { //停止预览 Stop live view if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_StopRealPlay failed, error code= " + iLastErr; MessageBox.Show(str); return; } m_lRealHandle = -1; btnPreview.Text = "开始预览"; } return; }
public void PreviewStartWeb() { 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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK 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); }
private void PlayEve4() { if (m_lUserID4 < 0) { MessageBox.Show("Please login the device firstly"); return; } if (m_lRealHandle4 < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = this.picEye4.Handle; //预览窗口 lpPreviewInfo.lChannel = Int16.Parse(eye_Channel4); //预te览的设备通道 lpPreviewInfo.dwStreamType = 1; //码流类型: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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack4); //预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 //打开预览 Start live view m_lRealHandle4 = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID4, ref lpPreviewInfo, null /*RealData*/, pUser); if (m_lRealHandle4 < 0) { iLastErr4 = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("NET_DVR_RealPlay_V40 failed, error code= " + iLastErr4); return; } else { } } else { //停止预览 Stop live view if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle4)) { iLastErr4 = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("NET_DVR_StopRealPlay failed, error code= " + iLastErr4); return; } m_lRealHandle4 = -1; } return; }
/// <summary> /// 实时预览 /// </summary> /// <param name="deviceInfo">预览参数</param> /// <param name="callBack">码流数据回调函数</param> /// <returns>-1预览失败,否则预览成功</returns> public override void Preview(DeviceInfo deviceInfo, CHCNetSDK.REALDATACALLBACK callBack) { IntPtr intPtr = new IntPtr(); CHCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); previewInfo.hPlayWnd = deviceInfo.Handle; //预te览的设备通道 previewInfo.lChannel = deviceInfo.channel; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 previewInfo.dwStreamType = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP previewInfo.dwLinkMode = 0; //0- 非阻塞取流,1- 阻塞取流 previewInfo.bBlocked = true; deviceInfo.realHandle = CHCNetSDK.NET_DVR_RealPlay_V40(deviceInfo.loginId, ref previewInfo, callBack, intPtr); }
/*预览有两种模式,在于是否传入码回调函数,具体区别可以查阅SDK操作手册,NET_DVR_RealPlay_V30()的返回值 * 为错误码,可以根据返回的错误码来进行下一步操作(码流是指视频文件在单位时间内使用的数据流量)*/ private void Previewbtn_Click(object sender, EventArgs e) { lpClientInfo.lChannel = 1; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; if (Previewbtn.Text == "预览") { if (m_iPreviewType == 0) // use by callback { lpClientInfo.hPlayWnd = IntPtr.Zero; m_ptrRealHandle = RealPlayWnd.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(Login.result, ref lpClientInfo, m_fRealData, pUser, 1); } else if (1 == m_iPreviewType) { lpClientInfo.hPlayWnd = RealPlayWnd.Handle; IntPtr pUser = new IntPtr(); m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(Login.result, ref lpClientInfo, null, pUser, 1); } if (m_lRealHandle == -1) { uint nError = CHCNetSDK.NET_DVR_GetLastError(); Information.Text += "发生错误,错误代码:" + nError + System.Environment.NewLine; } if (m_lRealHandle != -1) { Information.Text += "正在预览..." + System.Environment.NewLine; Previewbtn.Text = "停止预览"; } } else { bool result = CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle); if (result == true) { Information.Text += "预览结束" + System.Environment.NewLine; RealPlayWnd.Image = null; Previewbtn.Text = "预览"; } } }
public void StartPlay(IntPtr handle) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = handle; //预览窗口 lpPreviewInfo.lChannel = VideoInfo.Channel; //预te览的设备通道 lpPreviewInfo.dwStreamType = Convert.ToUInt32(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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 //打开预览 Start live view realHandle = CHCNetSDK.NET_DVR_RealPlay_V40(loginUserId, ref lpPreviewInfo, null /*RealData*/, pUser); if (realHandle < 0) { throw new Exception("[海康]播放失败:" + GetErrorMessage()); } }
private void StartPreview(int Channel) { if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); // lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle;//预览窗口 lpPreviewInfo.lChannel = Channel; //预te览的设备通道 lpPreviewInfo.dwStreamType = 0; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 lpPreviewInfo.dwLinkMode = 4; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 lpPreviewInfo.dwDisplayBufNum = 15; //播放库播放缓冲区最大缓冲帧数 RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 // m_ptrRealHandle = panel1.Handle; //打开预览 Start live view m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser); if (m_lRealHandle < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 MessageBox.Show(str); } } else { //停止预览 Stop live view if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_StopRealPlay failed, error code= " + iLastErr; MessageBox.Show(str); return; } m_lRealHandle = -1; } }
public void StartRecord(string sVideoFileName) { //强制I帧 Make a I frame { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); 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(); //用户数据 m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); //打开预览 Start live view } Console.WriteLine(m_lRealHandle); CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, 1); CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle, sVideoFileName);//开始录像 }
/// <summary> /// 预览窗口 /// </summary> /// <param name="m_lUserID">登录成功后返回的句柄</param> /// <param name="picLive">picture box</param> /// <returns>窗口句柄 m_RealHandle</returns> public int display(int m_lUserID, PictureBox picLive) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = picLive.Handle; //预览窗口 lpPreviewInfo.lChannel = Int16.Parse("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 = 15; //播放库播放缓冲区最大缓冲帧数 CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 IntPtr pUser = new IntPtr(); //用户数据 //打开预览 Start live view int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); if (m_lRealHandle < 0) { MessageBox.Show("预览失败"); return(-1); } return(m_lRealHandle); }
private void btnView_Click(object sender, EventArgs e) { //开始预览 if (m_lUserID < 0) { MessageBox.Show("Please login the device firstly"); return; } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = picView.Handle; //预览窗口 lpPreviewInfo.lChannel = 36; //预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 = 15; //播放库播放缓冲区最大缓冲帧数 if (RealData == null) { RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 } IntPtr pUser = new IntPtr();//用户数据 m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser); if (m_lRealHandle < 0) { string str = "NET_DVR_RealPlay_V40 failed, error code= " + CHCNetSDK.NET_DVR_GetLastError(); //预览失败,输出错误号 MessageBox.Show(str); return; } btnView.Enabled = false; btnCancelView.Enabled = true; } }
public int startPreview(int m_lUserID, int lChannel) { int RealHandle = -1; lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.lChannel = lChannel;//预览的设备通道 the device channel number 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- 阻塞取流 IntPtr pUser = IntPtr.Zero;//用户数据 user data if (previewMode == 0) { lpPreviewInfo.hPlayWnd = m_ptrRealHandle;//预览窗口 live view window RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser); } else { lpPreviewInfo.hPlayWnd = IntPtr.Zero;//预览窗口 live view window RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function //3.实时预览 RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser); } return RealHandle; }
private void btnPreview_Click(object sender, System.EventArgs e) { if (isPreviewing()) { stopPreview(); this.btnPreview.Image = global::PreviewDemo.Properties.Resources.play; this.btnPreview.Text = "Reproducir"; return; } int channel = 1; int.TryParse(this.chanEdt.Text, out channel); lpClientInfo.lChannel = channel; lpClientInfo.lLinkMode = 0x0000; lpClientInfo.sMultiCastIP = ""; /* lpPreviewInfo.lChannel = channel; lpPreviewInfo.dwLinkMode = 0; lpPreviewInfo.bBlocked = 1; */ if (m_iPreviewType == 0) // use by callback { lpClientInfo.hPlayWnd = IntPtr.Zero;// todo!!! 这边应该做2中情况考虑去编写代码 m_ptrRealHandle = RealPlayWnd.Handle; m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); IntPtr pUser = new IntPtr(); //m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, m_fRealData, pUser); m_lRealHandle = CHCNetSDK.NET_DVR_ZeroStartPlay(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); } else if (1 == m_iPreviewType) { lpClientInfo.hPlayWnd = RealPlayWnd.Handle; IntPtr pUser = new IntPtr(); //m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1); m_lRealHandle = CHCNetSDK.NET_DVR_ZeroStartPlay(m_lUserID, ref lpClientInfo, null, pUser, 1); } if (m_lRealHandle == -1) { debugError(); return; } this.btnPreview.Image = global::PreviewDemo.Properties.Resources.stop; this.btnPreview.Text = "Detener"; }
private void btnPreview_Click(object sender, EventArgs e) { if (m_lUserID < 0) { MessageBox.Show("Please login the device firstly!"); return; } if (m_bRecord) { MessageBox.Show("Please stop recording firstly!"); return; } //if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = selectedRealPlayWnd.Handle;//预览窗口 live view window lpPreviewInfo.lChannel = iChannelNum[(int)iSelIndex];//预览的设备通道 the device channel number 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- 阻塞取流 IntPtr pUser = new IntPtr(lpPreviewInfo.lChannel);//IntPtr.Zero;//用户数据 user data if (!channelPortDict.ContainsKey(lpPreviewInfo.lChannel)) { channelPortDict.Add(lpPreviewInfo.lChannel, -1); } if (!lRealHandleDict.ContainsKey(lpPreviewInfo.lChannel)) { lRealHandleDict.Add(lpPreviewInfo.lChannel, -1); } if (comboBoxView.SelectedIndex == 0) { //打开预览 Start live view channelPortDict[lpPreviewInfo.lChannel] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser); } else //回调解码 { if (!ptrRealHandleDict.ContainsKey(lpPreviewInfo.lChannel)) { ptrRealHandleDict.Add(lpPreviewInfo.lChannel, selectedRealPlayWnd.Handle); } else { ptrRealHandleDict[lpPreviewInfo.lChannel] = selectedRealPlayWnd.Handle; } //RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function //lRealHandleDict[lpPreviewInfo.lChannel] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser); CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function RealDataDict.Add(lpPreviewInfo.lChannel, RealData); lRealHandleDict[lpPreviewInfo.lChannel] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser); } if (lRealHandleDict[lpPreviewInfo.lChannel] < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 failed to start live view, and output the error code. DebugInfo(str); return; } else { //预览成功 DebugInfo("NET_DVR_RealPlay_V40 succ!"); //btnPreview.Text = "Stop View"; } } return; }
private void btnPreview_Click(object sender, EventArgs e) { if (m_lUserID < 0) { MessageBox.Show("Please login the device firstly!"); return; } if (m_bRecord) { MessageBox.Show("Please stop recording firstly!"); return; } if (m_lRealHandle < 0) { CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle;//预览窗口 live view window lpPreviewInfo.lChannel = iChannelNum[(int)iSelIndex];//预览的设备通道 the device channel number 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- 阻塞取流 IntPtr pUser = IntPtr.Zero;//用户数据 user data if (comboBoxView.SelectedIndex == 0) { //打开预览 Start live view m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser); } else //回调解码 { lpPreviewInfo.hPlayWnd = IntPtr.Zero;//预览窗口 live view window m_ptrRealHandle = RealPlayWnd.Handle; RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser); } if (m_lRealHandle < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 failed to start live view, and output the error code. DebugInfo(str); return; } else { //预览成功 DebugInfo("NET_DVR_RealPlay_V40 succ!"); btnPreview.Text = "Stop View"; } } else { //停止预览 Stop live view if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_StopRealPlay failed, error code= " + iLastErr; DebugInfo(str); return; } if ((comboBoxView.SelectedIndex == 1) && (m_lPort >= 0)) { if (!PlayCtrl.PlayM4_Stop(m_lPort)) { iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort); str = "PlayM4_Stop failed, error code= " + iLastErr; DebugInfo(str); } if (!PlayCtrl.PlayM4_CloseStream(m_lPort)) { iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort); str = "PlayM4_CloseStream failed, error code= " + iLastErr; DebugInfo(str); } if (!PlayCtrl.PlayM4_FreePort(m_lPort)) { iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort); str = "PlayM4_FreePort failed, error code= " + iLastErr; DebugInfo(str); } m_lPort = -1; } DebugInfo("NET_DVR_StopRealPlay succ!"); m_lRealHandle = -1; btnPreview.Text = "Live View"; RealPlayWnd.Invalidate();//刷新窗口 refresh the window } return; }