/// <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"); }
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); }
void timerElapsed(object sender, EventArgs e) { if (_frame != null) { analyze(VideoHelper.CreateBitmap(ref _frame)); } }
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); } } } }
/// <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; }
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); }