public bool Refresh() { if (PlayHandle > -1) { return(HCNetSDKWrap.NET_DVR_RefreshPlay(PlayHandle)); } return(false); }
public bool MakeKeyFrame() { CHKDVRDevice device = DVRDevice; if (device != null && device.IsLogin) { //CLocalSystem.WriteLog("Debug", "Call HKDVRPlayer.MakeKeyFrame()"); return(HCNetSDKWrap.NET_DVR_MakeKeyFrame(device.UserID, Channel)); } return(false); }
public bool Normal() //正常播放放 { if (PlayHandle > -1 && PlayStatus == PlayState.Play) //播放中 { if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYNORMAL, 0, ref mOutValue)) { mIsFramePlay = false; return(true); } } return(false); }
public bool Frame() //单帧放 { if (PlayHandle > -1 && PlayStatus == PlayState.Play) //播放中 { if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYFRAME, 0, ref mOutValue)) { mIsFramePlay = true; return(true); } } return(false); }
protected override bool PrepStop() { if (PlayHandle > -1) { HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYPAUSE, 0, ref mOutValue); if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYSTOP, 0, ref mOutValue)) { return(true); } } return(false); }
protected override bool PrepPlay() { if (PlayHandle < 0) { PlayHandle = HCNetSDKWrap.NET_DVR_RealPlay(DVRDevice.UserID, ref mClientInfo); if (PlayHandle > -1) { HCNetSDKWrap.NET_DVR_SetPlayerBufNumber(PlayHandle, 10); HCNetSDKWrap.NET_DVR_SetRealDataCallBack(PlayHandle, mPlayDataCallback, 0); if (ImageDrawer.DrawFun != null) { HCNetSDKWrap.NET_DVR_RigisterDrawFun(PlayHandle, ImageDrawer.DrawFun, DVRDevice.UserID); } Thread.Sleep(1000); PlayPort = HCNetSDKWrap.NET_DVR_GetRealPlayerIndex(PlayHandle); int n = 0; while (PlayPort < 0) { Thread.Sleep(100); PlayPort = HCNetSDKWrap.NET_DVR_GetRealPlayerIndex(PlayHandle); if (++n > 5) { break; } } if (PlayPort > -1) { return(true); } else { HKDVRException hke = new HKDVRException("获取播放器端口失败"); CLocalSystem.WriteErrorLog(string.Format("HKDVRRealPlayer({0}) 播放时获取播放器端口({1})失败:{2}", this.Name, PlayPort, hke.Message)); if (HCNetSDKWrap.NET_DVR_StopRealPlay(PlayHandle)) { PlayHandle = -1; } } } else { HKDVRException hke = new HKDVRException("播放失败"); CLocalSystem.WriteErrorLog(string.Format("HKDVRRealPlayer({0}) {1}", this.Name, hke.Message)); } } return(false); }
public bool Resum() { if (PlayHandle > -1 && PlayStatus == PlayState.Pause) //暂停播放 { if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYRESTART, 0, ref mOutValue)) { PlayStatus = PlayState.Play; mIsFramePlay = false; return(true); } } return(false); }
public bool Pause() { if (PlayHandle > -1 && PlayStatus == PlayState.Play) //播放中 { if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYPAUSE, 0, ref mOutValue)) { PlayStatus = PlayState.Pause; mIsFramePlay = false; return(true); } } return(false); }
protected override bool PrepClose() { if (PlayHandle > -1) { if (HCNetSDKWrap.NET_DVR_StopPlayBack(PlayHandle)) { PlayHandle = -1; PlayPort = -1; return(true); } } return(false); }
protected override bool PrepStop() { if (PlayHandle >= 0) { if (HCNetSDKWrap.NET_DVR_StopRealPlay(PlayHandle)) { PlayPort = -1; PlayHandle = -1; return(true); } } return(false); }
protected override bool PrepOpen(object target) { if (PlayHandle < 0) { if (mType == 1) { PlayHandle = HCNetSDKWrap.NET_DVR_PlayBackByName(DVRDevice.UserID, target.ToString(), HWnd); } else if (mType == 2) { PlayHandle = HCNetSDKWrap.NET_DVR_PlayBackByTime(DVRDevice.UserID, (Int32)target, ref mStartTime, ref mStopTime, HWnd); } else { throw new Exception("回放类型不支持!"); } if (PlayHandle > -1) { PlayPort = HCNetSDKWrap.NET_DVR_GetPlayBackPlayerIndex(PlayHandle); if (PlayPort > -1) { mTryCount = 0; if (ImageDrawer.DrawFun != null) { HCNetSDKWrap.PlayM4_RigisterDrawFun(PlayPort, ImageDrawer.DrawFun, DVRDevice.UserID); } return(true); } else if (HCNetSDKWrap.NET_DVR_StopPlayBack(PlayHandle)) { PlayHandle = -1; CLocalSystem.WriteErrorLog(string.Format("HKDVRBackPlayer({0}) 播放时获取播放器句柄失败:{1}", this.Name, PlayPort)); } } else { int nErr = HCNetSDKWrap.NET_DVR_GetLastError(); CLocalSystem.WriteErrorLog(string.Format("HKDVRBackPlayer({0}) 播放失败:{1}", this.Name, nErr)); PlayStatus = PlayState.Error; } } return(false); }
public bool Slow() //慢放 { if (PlayHandle > -1 && PlayStatus == PlayState.Play) //播放中 { if (mIsFramePlay) { Normal(); } if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYSLOW, 0, ref mOutValue)) { mIsFramePlay = false; return(true); } } return(false); }
protected void DoPlayDataCallback(int lRealHandle, int dwDataType, IntPtr pBuffer, int dwBufSize, int dwUser) { switch (dwDataType) { case HCNetSDKWrap.NET_DVR_SYSHEAD: //System.Console.Out.WriteLine(Name + " DataType=" + dwDataType + ", Size=" + dwBufSize); if (this.VideoSourceStatus != VideoSourceState.Norme) { //CLocalSystem.WriteLog("Debug", string.Format("{0} DataType={1}, Size={2}", Name, dwDataType, dwBufSize)); HCNetSDKWrap.PlayM4_ResetSourceBuffer(mPlayPort); HCNetSDKWrap.PlayM4_ResetBuffer(mPlayPort, HCNetSDKWrap.BUF_VIDEO_SRC); HCNetSDKWrap.PlayM4_ResetBuffer(mPlayPort, HCNetSDKWrap.BUF_VIDEO_RENDER); MakeKeyFrame(); mCancelCount = 0; //this.VideoSourceStatus = VideoSourceState.Norme; } break; case HCNetSDKWrap.NET_DVR_STREAMDATA: if (this.VideoSourceStatus != VideoSourceState.Norme) { mCancelCount++; if (mCancelCount > (Config.FPS * 10)) { this.VideoSourceStatus = VideoSourceState.Norme; mCancelCount = 0; } } //System.Console.Out.WriteLine(Name + " DataType=" + dwDataType + ", Size=" + dwBufSize); break; default: CLocalSystem.WriteErrorLog(string.Format("HKDVRPlayer({0}) DataType={1}, Size={2}", Name, dwDataType, dwBufSize)); this.VideoSourceStatus = VideoSourceState.NoLink; break; } }
public bool Play(bool mute) { if (PlayHandle > -1) { if (PlayStatus == PlayState.Close || PlayStatus == PlayState.End || PlayStatus == PlayState.Stop) { if (Close()) { if (!Open(Target)) { return(false); } } } IsMute = mute; if (PlayStatus == PlayState.Open) //准备播放 { if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYSTART, mInValue, ref mOutValue)) { mOldPlayFrame = 0; mIsFramePlay = false; return(true); } } else if (PlayStatus == PlayState.Pause) //暂停 { if (HCNetSDKWrap.NET_DVR_PlayBackControl(PlayHandle, HCNetSDKWrap.NET_DVR_PLAYRESTART, 0, ref mOutValue)) { mIsFramePlay = false; return(true); } } } return(false); }
protected override Bitmap GetCurFrame() { if (mPlayPort > -1 && this.VideoSourceStatus == VideoSourceState.Norme) { if (System.Threading.Monitor.TryEnter(mLockFrameObj)) { try { int size = 0; if (HCNetSDKWrap.PlayM4_GetBMP(mPlayPort, mBuffer, mBuffer.Length, ref size)) { if (size > 0) { MemoryStream ms = new MemoryStream(mBuffer, 0, size); try { mFrameErrorNum = 0; return(new Bitmap(ms)); } finally { ms.Close(); ms.Dispose(); } } } else { mFrameErrorNum++; HKPlayException hke = new HKPlayException(mPlayPort, "抓帧失败"); if (mFrameErrorNum > 500) { mFrameErrorNum = 0; mFrameErrorCode = hke.Code; CLocalSystem.WriteErrorLog(string.Format("HKDVRPlayer({0}).GetCurFrame HKError: {1}", Name, hke.Message)); if (mFrameErrorCode == 0) { this.VideoSourceStatus = VideoSourceState.FrameError; //this.Reset(); //由视频源状态事件处理 } } else if (hke.Code != mFrameErrorCode) { mFrameErrorCode = hke.Code; CLocalSystem.WriteErrorLog(string.Format("HKDVRPlayer({0}).GetCurFrame HKError: {1}", Name, hke.Message)); } } } catch (Exception e) { CLocalSystem.WriteErrorLog(string.Format("HKDVRPlayer({0}).GetCurFrame Exception: {1}", Name, e)); } finally { System.Threading.Monitor.Exit(mLockFrameObj); } } } else { CLocalSystem.WriteErrorLog(string.Format("HKDVRPlayer({0}).GetCurFrame StateError: PlayPort={1} VideoSourceStatus={2}", Name, mPlayPort, this.VideoSourceStatus)); } return(null); }