public MyWrite(string dir, string filename) { _videoDecoder = new VideoPacketDecoder(PixelFormat.BGR24); _fileName = filename; _dir = dir; _packetQueue = new ConcurrentQueue <object>(); _vedioDir = _dir + @"/" + _fileName + @"/vedio"; _navdataDir = _dir + @"/" + _fileName + @"/navdata"; _navigationDataFile = new FileStream(_dir + @"/" + _fileName + ".nav", FileMode.OpenOrCreate); _navigationDataWriter = new StreamWriter(_navigationDataFile); //创建vedio文件夹 if (!Directory.Exists(_vedioDir)) { Directory.CreateDirectory(_vedioDir); } //创建navdata文件夹 if (!Directory.Exists(_navdataDir)) { Directory.CreateDirectory(_navdataDir); } }
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); } }