コード例 #1
0
ファイル: DroneController.cs プロジェクト: TNvGelder/DroneIt
        /// <summary>
        /// Saves the image from the video decoder
        /// </summary>
        public void SaveImage()
        {
            if (_frame == null)
            {
                return;
            }

            if (_frameBitmap == null)
            {
                _frameBitmap = VideoHelper.CreateBitmap(ref _frame);
            }
            else
            {
                VideoHelper.UpdateBitmap(ref _frameBitmap, ref _frame);
            }

            if (!Directory.Exists(DataPath))
            {
                System.IO.Directory.CreateDirectory(DataPath);
            }

            _frameBitmap.Save(DataPath + _frameTag + _frameNumber.ToString("000000") + ".png");

            if (!Directory.Exists(LivePath))
            {
                System.IO.Directory.CreateDirectory(LivePath);
            }

            _frameBitmap.Save(LivePath + "live.png");
        }
コード例 #2
0
        private unsafe void Button_Test_Click(object sender, RoutedEventArgs e)
        {
            Bitmap bitmap = CreateTestBitmap();

            AVFrame *inFrame = FFmpegInvoke.avcodec_alloc_frame();

            if (inFrame == null)
            {
                throw new Exception("Could not allocate video frame");
            }
            inFrame->width  = bitmap.Width;
            inFrame->height = bitmap.Height;
            inFrame->format = (int)AVPixelFormat.AV_PIX_FMT_BGR24;

            int ret1 = FFmpegInvoke.av_image_alloc(&inFrame->data_0, inFrame->linesize, bitmap.Width, bitmap.Height, AVPixelFormat.AV_PIX_FMT_BGR24, 32);

            if (ret1 < 0)
            {
                throw new Exception("Could not allocate raw picture buffer");
            }

            VideoHelper.UpdateFrame(inFrame, bitmap);
            VideoConverter converterToYuv = new VideoConverter(AVPixelFormat.AV_PIX_FMT_YUV420P);
            var            data           = converterToYuv.ConvertFrame(inFrame);

            var bitmap2 = VideoHelper.CreateBitmap(data, bitmap.Width, bitmap.Height);

            SetImageSource(bitmap2);
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: jmservera/IoTDrone
 void timerElapsed(object sender, EventArgs e)
 {
     if (_frame != null)
     {
         analyze(VideoHelper.CreateBitmap(ref _frame));
     }
 }
コード例 #4
0
        private unsafe void SocketThread()
        {
            while (true)
            {
                var bytesReceived = _socket.Receive(_receiveBuffer);
                if (bytesReceived == 0)
                {
                    Thread.Sleep(1); continue;
                }
                var arr = new byte[bytesReceived];
                Array.Copy(_receiveBuffer, arr, bytesReceived);

                fixed(byte *pData = &arr[0])
                {
                    _avPacket.data = pData;
                    _avPacket.size = bytesReceived;
                    AVFrame *pFrame;

                    if (_decoder.TryDecode(ref _avPacket, out pFrame))
                    {
                        byte[] data   = _converter.ConvertFrame(pFrame);
                        var    bitmap = VideoHelper.CreateBitmap(data, pFrame->width, pFrame->height);
                        UpdateImage(bitmap);
                    }
                }
            }
        }
コード例 #5
0
ファイル: MainForm.cs プロジェクト: SBejga/MyoPilot
        /// <summary>
        /// Render the latest video frame to the vidoeFrame PictureBox
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerVideoUpdate_Tick(object sender, EventArgs e)
        {
            if (frame == null || frameNumber == frame.Number)
            {
                return;
            }
            frameNumber = frame.Number;

            if (frameBitmap == null)
            {
                frameBitmap = VideoHelper.CreateBitmap(ref frame);
            }
            else
            {
                VideoHelper.UpdateBitmap(ref frameBitmap, ref frame);
            }

            videoFrame.Image = frameBitmap;
        }
コード例 #6
0
        void tmrVideoUpdate_Tick(object sender, EventArgs e)
        {
            if (_frame == null || _frameNumber == _frame.Number)
            {
                return;
            }
            _frameNumber = _frame.Number;

            if (_frameBitmap == null)
            {
                _frameBitmap = VideoHelper.CreateBitmap(ref _frame);
            }
            else
            {
                VideoHelper.UpdateBitmap(ref _frameBitmap, ref _frame);
            }

            //pbVideo.Image = _frameBitmap;
            imgVideo.Source = VideoHelper.ConvertToBitmapImage(ref _frameBitmap);
        }