Ejemplo n.º 1
0
        public override void OpenForSnapshot(bool _async)
        {
            if (!_IsReadyForSnapshot)
            {
                ST_DeviceInfo stDeviceInfo = new ST_DeviceInfo();
                stDeviceInfo.st_InetAddr.szHostIP    = VideoSource.MediaSource;
                stDeviceInfo.st_InetAddr.nPORT       = (ushort)VideoSource.StreamPort;
                stDeviceInfo.st_InetAddr.nIPProtoVer = 1;
                stDeviceInfo.szUserID    = VideoSource.UserName;
                stDeviceInfo.szPassword  = VideoSource.Password;
                stDeviceInfo.nDeviceType = 1;  //

                int nRet      = 0;
                int nProtocol = 1;  //1表示udp协议,2表示tcp协议 4表示rtp协议
                //初始化设备信息
                nRet = InitRemoteLivePlayer2.Remote_Nvd_Init(ref nHandle, ref stDeviceInfo, nProtocol);

                //设置远程抓拍超时时间
                nRet = InitRemoteLivePlayer2.Remote_Snapshot_SetTimeout(nHandle, _RemoteSnapshotTimeout);

                //if (nRet == 0)
                //{
                //    nRet = InitRemoteLivePlayer2.Remote_Snapshot_Open(nHandle);//在抓拍时才打开远程抓拍
                //}
                this._IsReadyForSnapshot = (nRet == 0);
            }
        }
Ejemplo n.º 2
0
        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;
                    }

                    ST_DeviceInfo stDeviceInfo = new ST_DeviceInfo();
                    stDeviceInfo.st_InetAddr.szHostIP    = VideoSource.MediaSource;
                    stDeviceInfo.st_InetAddr.nPORT       = (ushort)VideoSource.StreamPort;
                    stDeviceInfo.st_InetAddr.nIPProtoVer = 1;
                    stDeviceInfo.szUserID    = VideoSource.UserName;
                    stDeviceInfo.szPassword  = VideoSource.Password;
                    stDeviceInfo.nDeviceType = 1;  //

                    int nRet      = 0;
                    int nProtocol = 1;  //1表示udp协议,2表示tcp协议 4表示rtp协议
                    //初始化设备信息
                    nRet = InitRemoteLivePlayer2.Remote_Nvd_Init(ref nHandle, ref stDeviceInfo, nProtocol);
                    if (nRet != 0)
                    {
                        return;
                    }

                    //设置是否拉伸模式
                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_SetStretchMode(nHandle, StretchToFit);
                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_SetAutoResizeFlag(nHandle, StretchToFit);
                    if (nRet != 0)
                    {
                        return;
                    }

                    //设置默认流ID,需根据网络摄像机的流设置来设置ID,不同码流会有不同的分辨率
                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_SetDefaultStreamId(nHandle, VideoSource.Channel);
                    if (nRet != 0)
                    {
                        return;
                    }

                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_SetAutoConnectFlag(nHandle, VideoSource.AutoReconnect);
                    if (nRet != 0)
                    {
                        return;
                    }

                    //打开摄像机
                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_Open(nHandle, 1);
                    if (nRet != 0)
                    {
                        return;
                    }

                    //播放视频
                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_Play(nHandle);
                    if (nRet != 0)
                    {
                        return;
                    }

                    nRet = InitRemoteLivePlayer2.Remote_LivePlayer2_SetVideoWindow(nHandle, int.Parse(video.Handle.ToString()), 0, 0, video.Width, video.Height);
                    if (nRet != 0)
                    {
                        return;
                    }

                    //设置远程抓拍超时时间
                    nRet = InitRemoteLivePlayer2.Remote_Snapshot_SetTimeout(nHandle, _RemoteSnapshotTimeout);

                    ////打开远程抓拍,不调用这个方法,打开视频时不能抓拍图片
                    //nRet = InitRemoteLivePlayer2.Remote_Snapshot_Open(nHandle);//在抓拍时才打开

                    if (nRet != 0)
                    {
                        return;
                    }
                    this._Status             = VideoStatus.Playing;
                    this._IsReadyForSnapshot = true;
                }
            }
        }