/// <summary> /// 写图像文件 /// </summary> /// <param name="videoPacket"></param> /// <returns></returns> private void Write(VideoPacket videoPacket) { VideoFrame frame; if (_videoDecoder.TryDecode(ref videoPacket, out frame)) { WriteBitmap(frame); } }
protected override void Loop(CancellationToken token) { // flush packet queue ConcurrentQueueHelper.Flush(_packetQueue); using (var videoDecoder = new VideoPacketDecoder(_pixelFormat)) while (token.IsCancellationRequested == false) { VideoPacket packet; if (_packetQueue.TryDequeue(out packet)) { VideoFrame frame; if (videoDecoder.TryDecode(ref packet, out frame)) { _onFrameDecoded(frame); } } Thread.Sleep(10); } }