/// <summary> /// 播放海康的回放 /// </summary> /// <param name="_iLoginHandle">登录句柄</param> /// <param name="_sEndTime">结束时间</param> /// <param name="_sStartTime">开始时间</param> public void StartPlayHik(int _iLoginHandle, string _sStartTime, string _sEndTime, int _iChannel) { if (!m_bIsConnect) { m_iChannel = _iChannel; m_iLoginHandle = _iLoginHandle; //录像回放的参数 CHCNetSDK.NET_DVR_VOD_PARA oHikLoginInfo = new CHCNetSDK.NET_DVR_VOD_PARA(); oHikLoginInfo.struIDInfo = new CHCNetSDK.NET_DVR_STREAM_INFO(); oHikLoginInfo.dwSize = (uint)Marshal.SizeOf(oHikLoginInfo); //结构体大小 oHikLoginInfo.struIDInfo.dwChannel = (uint)m_iChannel; oHikLoginInfo.struBeginTime = GetTimeObjectHik(_sStartTime); //开始播放的时间 oHikLoginInfo.struEndTime = GetTimeObjectHik(_sEndTime); //结束播放的时间 oHikLoginInfo.hWnd = ucSinglePanle.Handle; //播放窗口句柄 m_iPlayHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(m_iLoginHandle, ref oHikLoginInfo); //CHCNetSDK.NET_DVR_TIME oStartTime = GetTimeObjectHik(_sStartTime); //CHCNetSDK.NET_DVR_TIME oEndTime = GetTimeObjectHik(_sEndTime); //CHCNetSDK.NET_DVR_TIME oStartTime = GetTimeObjectHik(_sStartTime); //CHCNetSDK.NET_DVR_TIME oEndTime = GetTimeObjectHik(_sEndTime); //m_iPlayHandle = CHCNetSDK.NET_DVR_PlayBackByTime(m_iLoginHandle, m_iChannel, ref oStartTime, ref oEndTime, ucSinglePanle.Handle); uint a = CHCNetSDK.NET_DVR_GetLastError(); if (m_iPlayHandle != -1) { //播放录像 PlayControlHik(EHikControlInfo.NET_DVR_PLAYSTART); m_bIsConnect = true; } } }
private CHCNetSDK.NET_DVR_VOD_PARA CreateVideoPlayParameter(DateTime beginTime, DateTime endTime) { CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.dwSize = (UInt32)Marshal.SizeOf(struVodPara); struVodPara.struIDInfo.dwChannel = (UInt32)_channelNo; //通道号 struVodPara.hWnd = _hPlayWnd; //回放窗口句柄 //设置回放的开始时间 Set the starting time to search video files struVodPara.struBeginTime.dwYear = (UInt32)beginTime.Year; struVodPara.struBeginTime.dwMonth = (UInt32)beginTime.Month; struVodPara.struBeginTime.dwDay = (UInt32)beginTime.Day; struVodPara.struBeginTime.dwHour = (UInt32)beginTime.Hour; struVodPara.struBeginTime.dwMinute = (UInt32)beginTime.Minute; struVodPara.struBeginTime.dwSecond = (UInt32)beginTime.Second; //设置回放的结束时间 Set the stopping time to search video files struVodPara.struEndTime.dwYear = (UInt32)endTime.Year; struVodPara.struEndTime.dwMonth = (UInt32)endTime.Month; struVodPara.struEndTime.dwDay = (UInt32)endTime.Day; struVodPara.struEndTime.dwHour = (UInt32)endTime.Hour; struVodPara.struEndTime.dwMinute = (UInt32)endTime.Minute; struVodPara.struEndTime.dwSecond = (UInt32)endTime.Second; return(struVodPara); }
private void chongbo() { this.Invoke((EventHandler) delegate { CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); //struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); if (mytongdao <= 0) { return; } struVodPara.struIDInfo.dwChannel = (uint)iChannelNum[(int)(mytongdao - 1)]; //通道号 Channel number struVodPara.hWnd = pictureBox1.Handle; //回放窗口句柄 DateTime nowstarttime = mystarttime.AddSeconds(-10); //设置回放的开始时间 Set the starting time to search video files struVodPara.struBeginTime.dwYear = (uint)nowstarttime.Year; struVodPara.struBeginTime.dwMonth = (uint)nowstarttime.Month; struVodPara.struBeginTime.dwDay = (uint)nowstarttime.Day; struVodPara.struBeginTime.dwHour = (uint)nowstarttime.Hour; struVodPara.struBeginTime.dwMinute = (uint)nowstarttime.Minute; struVodPara.struBeginTime.dwSecond = (uint)nowstarttime.Second; //设置回放的结束时间 Set the stopping time to search video files struVodPara.struEndTime.dwYear = (uint)mystarttime.Year; struVodPara.struEndTime.dwMonth = (uint)mystarttime.Month; struVodPara.struEndTime.dwDay = (uint)mystarttime.Day; struVodPara.struEndTime.dwHour = (uint)mystarttime.Hour; struVodPara.struEndTime.dwMinute = (uint)mystarttime.Minute; struVodPara.struEndTime.dwSecond = (uint)mystarttime.Second; //按时间回放 Playback by time m_lPlayHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(m_lUserID, ref struVodPara); if (m_lPlayHandle < 0) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string str = "NET_DVR_PLAYSTART failed, error code= " + iLastErr; //回放控制失败,输出错误号 //MessageBox.Show(str); //return; //MessageBox.Show("回放错误!"); return; } uint iOutValue = 0; if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(m_lPlayHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue)) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string str = "NET_DVR_PLAYSTART failed, error code= " + iLastErr; //回放控制失败,输出错误号 // MessageBox.Show(str); return; } }); //timerPlayback.Interval = 1000; //timerPlayback.Enabled = true; //btnStopPlayback.Enabled = true; }
/// <summary> /// 根据时间进行回放 /// </summary> /// <param name="session"></param> /// <param name="cha"></param> /// <param name="start"></param> /// <param name="end"></param> /// <param name="handle"></param> /// <returns></returns> int NvrInterface.playBackByTime(int session, int cha, DateTime start, DateTime end, IntPtr handle, PlayBackEvent iPlayBack) { int result; // 播放信息的对象 CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); struVodPara.struIDInfo.dwChannel = (uint)cha; struVodPara.hWnd = handle; // 开始时间 struVodPara.struBeginTime.dwYear = (uint)start.Year; struVodPara.struBeginTime.dwMonth = (uint)start.Month; struVodPara.struBeginTime.dwDay = (uint)start.Day; struVodPara.struBeginTime.dwHour = (uint)start.Hour; struVodPara.struBeginTime.dwMinute = (uint)start.Minute; struVodPara.struBeginTime.dwSecond = (uint)start.Second; // 结束时间 struVodPara.struEndTime.dwYear = (uint)end.Year; struVodPara.struEndTime.dwMonth = (uint)end.Month; struVodPara.struEndTime.dwDay = (uint)end.Day; struVodPara.struEndTime.dwHour = (uint)end.Hour; struVodPara.struEndTime.dwMinute = (uint)end.Minute; struVodPara.struEndTime.dwSecond = (uint)end.Second; result = CHCNetSDK.NET_DVR_PlayBackByTime_V40(session - 1, ref struVodPara); if (result == -1) { // 播放失败 return(0); } else { // 播放成功 PlayBackCtlBlock ctlBlack = new PlayBackCtlBlock(); ctlBlack.session = result + 1; ctlBlack.start = start; ctlBlack.end = end; ctlBlack.even = iPlayBack; playBackBlocks.Add(result + 1, ctlBlack); return(result + 1); } }
public int StartReplayByTime(IntPtr screenHandle, string devIp, int devPort, string userName, string password, int channelNumber, DateTime beginTime, DateTime endTime) { int userId = -1; DevLoginModel devLoginModel = DeviceLogin(devIp, devPort, userName, password); if (devLoginModel != null) { userId = devLoginModel.LoginId; } if (userId < 0) { return(-1); } CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); struVodPara.struIDInfo.dwChannel = (uint)channelNumber; //通道号 Channel number struVodPara.hWnd = screenHandle; //回放窗口句柄 //设置回放的开始时间 Set the starting time to search video files struVodPara.struBeginTime = beginTime.ToHCDeviceTime(); //设置回放的结束时间 Set the stopping time to search video files struVodPara.struEndTime = endTime.ToHCDeviceTime(); //按时间回放 Playback by time int playHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(userId, ref struVodPara); if (playHandle < 0) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); return(Math.Abs((int)iLastErr) * (-1)); } uint iOutValue = 0; if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(playHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue)) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); return(Math.Abs((int)iLastErr) * (-1)); } return(playHandle); }
void delayPlay(int delayMinute) { CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); struVodPara.struIDInfo.dwChannel = (uint)chanid; //通道号 Channel number struVodPara.hWnd = pictureBox.Handle; //回放窗口句柄 DateTime dt = DateTime.Now; DateTime dt10 = dt.AddMinutes(-delayMinute); //设置回放的开始时间 Set the starting time to search video files struVodPara.struBeginTime.dwYear = (uint)dt10.Year; struVodPara.struBeginTime.dwMonth = (uint)dt10.Month; struVodPara.struBeginTime.dwDay = (uint)dt10.Day; struVodPara.struBeginTime.dwHour = (uint)dt10.Hour; struVodPara.struBeginTime.dwMinute = (uint)dt10.Minute; struVodPara.struBeginTime.dwSecond = (uint)dt10.Second; //设置回放的结束时间 Set the stopping time to search video files dt10 = dt.AddYears(1000); struVodPara.struEndTime.dwYear = (uint)dt10.Year; struVodPara.struEndTime.dwMonth = (uint)dt10.Month; struVodPara.struEndTime.dwDay = (uint)dt10.Day; struVodPara.struEndTime.dwHour = (uint)dt10.Hour; struVodPara.struEndTime.dwMinute = (uint)dt10.Minute; struVodPara.struEndTime.dwSecond = (uint)dt10.Second; int m_lPlayHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(userid, ref struVodPara); uint iLastErr; uint iOutValue = 0; if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(m_lPlayHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string str = "NET_DVR_PLAYSTART failed, error code= " + iLastErr; //回放控制失败,输出错误号 MessageBox.Show(str); pictureBox.Dispose(); return; } }
/// <summary> /// 播放海康的回放 /// </summary> /// <param name="_iLoginHandle">登录句柄</param> /// <param name="_sEndTime">结束时间</param> /// <param name="_sStartTime">开始时间</param> /// <param name="iType">摄像机类型1.自己 2.海康</param> /// <param name="_iChannel">通道号</param> public void StartPlayHik(int _iLoginHandle, string _sStartTime, string _sEndTime, int _iChannel, int iType) { m_iType = iType; m_iChannel = _iChannel; m_iLoginHandle = _iLoginHandle; //录像回放的参数 CHCNetSDK.NET_DVR_VOD_PARA oHikLoginInfo = new CHCNetSDK.NET_DVR_VOD_PARA(); oHikLoginInfo.struIDInfo = new CHCNetSDK.NET_DVR_STREAM_INFO(); oHikLoginInfo.dwSize = (uint)Marshal.SizeOf(oHikLoginInfo); //结构体大小 oHikLoginInfo.struIDInfo.dwChannel = (uint)m_iChannel; oHikLoginInfo.struBeginTime = GetTimeObjectHik(_sStartTime); //开始播放的时间 oHikLoginInfo.struEndTime = GetTimeObjectHik(_sEndTime); //结束播放的时间 oHikLoginInfo.hWnd = PanelFull.Handle; //播放窗口句柄 m_iHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(m_iLoginHandle, ref oHikLoginInfo); if (m_iHandle != -1) { //播放录像 PlayControlHik(EHikControlInfo.NET_DVR_PLAYSTART); } }
private void btnPlaybackTime_Click(object sender, EventArgs e) { if (m_lPlayHandle >= 0) { //如果已经正在回放,先停止回放 if (!CHCNetSDK.NET_DVR_StopPlayBack(m_lPlayHandle)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_StopPlayBack failed, error code= " + iLastErr; MessageBox.Show(str); return; } m_bReverse = false; btnReverse.Text = "Reverse"; labelReverse.Text = "切换为倒放"; m_bPause = false; btnPause.Text = "||"; labelPause.Text = "暂停"; m_lPlayHandle = -1; PlaybackprogressBar.Value = 0; } CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); struVodPara.struIDInfo.dwChannel = (uint)iChannelNum[(int)iSelIndex]; //通道号 Channel number struVodPara.hWnd = VideoPlayWnd.Handle; //回放窗口句柄 //设置回放的开始时间 Set the starting time to search video files struVodPara.struBeginTime.dwYear = (uint)dateTimeStart.Value.Year; struVodPara.struBeginTime.dwMonth = (uint)dateTimeStart.Value.Month; struVodPara.struBeginTime.dwDay = (uint)dateTimeStart.Value.Day; struVodPara.struBeginTime.dwHour = (uint)dateTimeStart.Value.Hour; struVodPara.struBeginTime.dwMinute = (uint)dateTimeStart.Value.Minute; struVodPara.struBeginTime.dwSecond = (uint)dateTimeStart.Value.Second; //设置回放的结束时间 Set the stopping time to search video files struVodPara.struEndTime.dwYear = (uint)dateTimeEnd.Value.Year; struVodPara.struEndTime.dwMonth = (uint)dateTimeEnd.Value.Month; struVodPara.struEndTime.dwDay = (uint)dateTimeEnd.Value.Day; struVodPara.struEndTime.dwHour = (uint)dateTimeEnd.Value.Hour; struVodPara.struEndTime.dwMinute = (uint)dateTimeEnd.Value.Minute; struVodPara.struEndTime.dwSecond = (uint)dateTimeEnd.Value.Second; //按时间回放 Playback by time m_lPlayHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(m_lUserID, ref struVodPara); if (m_lPlayHandle < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_PlayBackByTime_V40 failed, error code= " + iLastErr; MessageBox.Show(str); return; } uint iOutValue = 0; if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(m_lPlayHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_PLAYSTART failed, error code= " + iLastErr; //回放控制失败,输出错误号 MessageBox.Show(str); return; } timerPlayback.Interval = 1000; timerPlayback.Enabled = true; btnStopPlayback.Enabled = true; }
/// <summary> /// 设置播放录像的时间段 /// </summary> /// <param name="pStartTime">录像开始时间</param> /// <param name="pEndTime">录像结束时间</param> /// <returns></returns> public bool PlayByTime(DateTime pStartTime, DateTime pEndTime) { bool rtn = false; if (!_initSDK) { _initSDK = CHCNetSDK.NET_DVR_Init(); VideoPlayBackLogger.Debug("按时间回放时,初始化设备。", _cameraCfg.Channel); } else { if (_playBackHandel >= 0) { CHCNetSDK.NET_DVR_StopPlayBack(_playBackHandel); VideoPlayBackLogger.Debug("按时间回放时,初始化设备。", _cameraCfg.Channel); _playBackHandel = -1; } if (_userID >= 0) { CHCNetSDK.NET_DVR_Logout(_userID); VideoPlayBackLogger.Debug("按时间回放时,强制退出当前用户。", _cameraCfg.Channel); _userID = -1; } } if (_initSDK) { CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30(); //登录设备 VideoPlayBackLogger.Debug(string.Format("按时间回放时,登录设备。_cameraCfg.Ip={0},_cameraCfg.Port={1},_cameraCfg.UserName={2},_cameraCfg.PassWord={3}", _cameraCfg.Ip, _cameraCfg.Port, _cameraCfg.UserName, _cameraCfg.PassWord), _cameraCfg.Channel); _userID = CHCNetSDK.NET_DVR_Login_V30(_cameraCfg.Ip, int.Parse(_cameraCfg.Port), _cameraCfg.UserName, _cameraCfg.PassWord, ref DeviceInfo); if (_userID >= 0) { VideoPlayBackLogger.Debug("按时间回放时,登录成功。", _cameraCfg.Channel); CHCNetSDK.NET_DVR_VOD_PARA tPara = new CHCNetSDK.NET_DVR_VOD_PARA(); tPara.dwSize = (uint)Marshal.SizeOf(tPara); tPara.struIDInfo.dwChannel = uint.Parse((int.Parse(_cameraCfg.Channel) + (int)DeviceInfo.byStartDChan).ToString()); //通道号 Channel number tPara.hWnd = _controlHandel; //回放窗口句柄 VideoPlayBackLogger.Debug("设置回放通道号 tPara.struIDInfo.dwChannel=" + tPara.struIDInfo.dwChannel, _cameraCfg.Channel); //设置回放的开始时间 tPara.struBeginTime.dwYear = (uint)pStartTime.Year; tPara.struBeginTime.dwMonth = (uint)pStartTime.Month; tPara.struBeginTime.dwDay = (uint)pStartTime.Day; tPara.struBeginTime.dwHour = (uint)pStartTime.Hour; tPara.struBeginTime.dwMinute = (uint)pStartTime.Minute; tPara.struBeginTime.dwSecond = (uint)pStartTime.Second; VideoPlayBackLogger.Debug(string.Format("设置回放开始时间dwYear={0},dwMonth={1},dwDay={2},dwHour={3},dwMinute={4},dwSecond={5}", pStartTime.Year, pStartTime.Month, pStartTime.Day, pStartTime.Hour, pStartTime.Minute, pStartTime.Second), _cameraCfg.Channel); //设置回放的结束时间 tPara.struEndTime.dwYear = (uint)pEndTime.Year; tPara.struEndTime.dwMonth = (uint)pEndTime.Month; tPara.struEndTime.dwDay = (uint)pEndTime.Day; tPara.struEndTime.dwHour = (uint)pEndTime.Hour; tPara.struEndTime.dwMinute = (uint)pEndTime.Minute; tPara.struEndTime.dwSecond = (uint)pEndTime.Second; VideoPlayBackLogger.Debug(string.Format("设置回放结束时间dwYear={0},dwMonth={1},dwDay={2},dwHour={3},dwMinute={4},dwSecond={5}", pEndTime.Year, pEndTime.Month, pEndTime.Day, pEndTime.Hour, pEndTime.Minute, pEndTime.Second), _cameraCfg.Channel); _playBackHandel = CHCNetSDK.NET_DVR_PlayBackByTime_V40(_userID, ref tPara); if (_playBackHandel < 0) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); ShowMsg("回放初始化失败,错误编码=" + iLastErr); VideoPlayBackLogger.Error("回放初始化失败,错误编码=" + iLastErr, _cameraCfg.Channel); } else { uint iOutValue = 0; if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(_playBackHandel, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue)) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); ShowMsg("启动回放失败,错误码:" + iLastErr); VideoPlayBackLogger.Debug("启动回放失败,错误码:" + iLastErr, _cameraCfg.Channel); } else { _playbackTimer.Start(); VideoPlayBackLogger.Debug("开始按照时间段回放。", _cameraCfg.Channel); //ShowMsg("启动定时器成功"); rtn = true; } } } } return(rtn); }
/// <summary> /// 鹰眼回放 /// </summary> private void EaglePlayBack() { if (m_lPlayBackHandle != -1) { CHCNetSDK.NET_DVR_StopRealPlay(m_lPlayBackHandle); m_lPlayBackHandle = -1; } CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.Init(); if (m_iChanIndex > (g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum - 1) && (g_struDeviceInfo[m_iDeviceIndex].byMirrorChanNum) > 0) { m_iChanPlayBack = (uint)g_struDeviceInfo[m_iDeviceIndex].struMirrorChan[m_iChanIndex + 1 - g_struDeviceInfo[m_iDeviceIndex].wStartMirrorChanNo].iChannelNO; } else { m_iChanPlayBack = (uint)g_struDeviceInfo[m_iDeviceIndex].pStruChanInfo[m_iChanIndex].iChannelNO; } struVodPara.struBeginTime.dwYear = dtStart.Year; struVodPara.struBeginTime.dwMonth = dtStart.Month; struVodPara.struBeginTime.dwDay = dtStart.Day; struVodPara.struBeginTime.dwHour = dtStart.Hour; struVodPara.struBeginTime.dwMinute = dtStart.Minute; struVodPara.struBeginTime.dwSecond = dtStart.Second; struVodPara.struEndTime.dwYear = dtEnd.Year; struVodPara.struEndTime.dwMonth = dtEnd.Month; struVodPara.struEndTime.dwDay = dtEnd.Day; struVodPara.struEndTime.dwHour = dtEnd.Hour; struVodPara.struEndTime.dwMinute = dtEnd.Minute; struVodPara.struEndTime.dwSecond = dtEnd.Second; struVodPara.struIDInfo.dwChannel = m_iChanPlayBack; struVodPara.hWnd = IntPtr.Zero; struVodPara.struIDInfo.dwSize = (uint)Marshal.SizeOf(struVodPara.struIDInfo); struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); m_lPlayBackHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40((uint)m_lUserID, ref struVodPara); if (m_lPlayBackHandle == -1) { string strShow = null; strShow = string.Format("NET_DVR_PlayBackByTime_V40 ChanNum[" + m_iChanPlayBack + "]"); MessageBox.Show(strShow); return; } m_StreamPlayMode = 1; g_fPlayDataCallBack_V40 = new CHCNetSDK.PLAYDATACALLBACK_V40(PlayDataCallBack_V40); if (!CHCNetSDK.NET_DVR_SetPlayDataCallBack_V40(m_lPlayBackHandle, g_fPlayDataCallBack_V40, IntPtr.Zero)) { //m_dwLastError = CHCNetSDK.NET_DVR_GetLastError(); return; } uint dwTemp = 0; int dwFileOffset = 0; if (CHCNetSDK.NET_DVR_PlayBackControl(m_lPlayBackHandle, CHCNetSDK.NET_DVR_PLAYSTART, (uint)dwFileOffset, ref dwTemp)) { SetPlayState(); //strShow = string.Format("NET_DVR_PLAYSTART offset{0}", dwFileOffset); //g_formList.AddLog(m_iDeviceIndex, CHCNetSDK.OPERATION_SUCC_T, strShow); } else { //strShow = string.Format("NET_DVR_PLAYSTART offset{0}", dwFileOffset); //g_formList.AddLog(m_iDeviceIndex, CHCNetSDK.OPERATION_FAIL_T, strShow); CHCNetSDK.NET_DVR_StopPlayBack(m_lPlayBackHandle); m_lPlayBackHandle = -1; //g_formList.g_StringLanType(ref strShow, "回放失败!", "NET_DVR_PLAYSTART Failed!"); //MessageBox.Show(strShow); return; } if (!TimerPlayBack.Enabled) { TimerPlayBack.Enabled = true; } }