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); } }
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; } } }