Esempio n. 1
0
 public bool Refresh()
 {
     if (PlayHandle > -1)
     {
         return(HCNetSDKWrap.NET_DVR_RefreshPlay(PlayHandle));
     }
     return(false);
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
 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);
 }
Esempio n. 9
0
 protected override bool PrepClose()
 {
     if (PlayHandle > -1)
     {
         if (HCNetSDKWrap.NET_DVR_StopPlayBack(PlayHandle))
         {
             PlayHandle = -1;
             PlayPort   = -1;
             return(true);
         }
     }
     return(false);
 }
Esempio n. 10
0
        protected override bool PrepStop()
        {
            if (PlayHandle >= 0)
            {
                if (HCNetSDKWrap.NET_DVR_StopRealPlay(PlayHandle))
                {
                    PlayPort   = -1;
                    PlayHandle = -1;

                    return(true);
                }
            }
            return(false);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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;
            }
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }