示例#1
0
        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);
            }
        }
示例#2
0
        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);
                }
        }