public override void Stop() { if (!_isworking) { return; } _isworking = false; ThreadEx.ThreadStop(_playThread); _queue.Clear(); _curPlayTime = 0; }
public void Stop() { if (!_isworking) { return; } _isworking = false; ThreadEx.ThreadStop(_playThread); ThreadEx.ThreadStop(_PlayBackwardThread); _queue.Clear(); _curPlayMediaTimetick = 0; _yuvDraw.Stop(); }
public override void Close() { base.Close(); if (_curMS != null) { _queueMS.Clear(); } if (_curMS != null) { _curMS.Close(); } }
public void Stop() { if (!_isWorking) { return; } _isWorking = false; ThreadEx.Stop(_analyzeThead); _listAudioPES.Clear(); _listVideoPES.Clear(); _queueFrame.Clear(); ms.Close(); }
public void Start() { if (_isworking) { return; } _isworking = true; _firstVideoFrameTime = 0; _firstAudioFrameTime = 0; _firstFrameTime = 0; _startPlayTick = 0; _queue.Clear(); _cache.Clear(); _vp.Start(); _ap.Start(); _playThread = ThreadEx.ThreadCall(PlayThread); }
protected void OnNewMediaFrame(MediaFrame frame) { if (!_isworking) { return; } if (frame.nIsAudio == 0) { _videoCount++; } else { _audioCount++; } if (_firstTimetick == 0) { _firstTimetick = frame.nTimetick; } if (AutoResetFrameTimetick) { if (frame.nTimetick < _firstTimetick) { return; } if (frame.nTimetick == _firstTimetick && _lastTimetick != 0) { _tsms.Clean(); _qAudioMediaFrame.Clear(); _qVideoMediaFrame.Clear(); _timetickOffset = _lastTimetick - _firstTimetick; } //重置时间戳 frame.nTimetick += _timetickOffset; if (frame.nIsAudio == 0) { // Console.WriteLine(frame.nTimetick - _lastTimetick); } } _lastTimetick = frame.nTimetick; if (ResetFrameTimetickForSystemTick) { if (_firstFrameSystemTick == 0) { _firstFrameTimetick = frame.nTimetick; _firstFrameSystemTick = DateTime.Now.Ticks / 10000; } frame.nTimetick = (frame.nTimetick - _firstFrameTimetick) + _firstFrameSystemTick; } if (frame.nIsKeyFrame == 1 && frame.nIsAudio == 0) { IsCanPlay = true; if (IPTVChannelInfo != null) { Log(string.Format("{0} video:{1} audio:{2} ", IPTVChannelInfo.Name, _videoCount, _audioCount)); } } try { if (ReceiveFrame != null) { ReceiveFrame(frame); } } catch (Exception e) { throw; _DebugEx.Trace(e); } }