private void video_NewFrame_fail(object sender, NewFrameEventArgs eventArgs) { using (Bitmap videoimg = (Bitmap)eventArgs.Frame.Clone()) { try { //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); // save image to file if (m_startrecording && FileWriter.IsOpen && videoimg != null) { FileWriter.WriteVideoFrame(videoimg); FileWriter.Flush(); } pictureBox1.Image = videoimg;// (Bitmap)eventArgs.Frame.Clone(); } catch { Console.WriteLine("object is used somewhere else"); } } //do processing here //videoimg.Dispose(); }
private void OnTimedEvent(Object source, ElapsedEventArgs e) { //Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}",e.SignalTime); if (aTimer.Enabled) { if (IsSrc1Dirty && _cam1 != null) { //Console.Write("count" + ncount++); // a refresh is needed of source 1 try { // always lock image data to prevent accessing of the image from other threads. _cam1.GetImage().EnterLock(); this.Invoke((MethodInvoker) delegate() { pictureBoxSource1.Image = _cam1.GetImage().Image; }); //pictureBoxSource1.Image = _cam1.GetImage().Image; // save image to file if (m_startrecording && FileWriter.IsOpen) { //StartTick; long currentTick = DateTime.Now.Ticks; var frameOffset = new TimeSpan(currentTick - StartTick); Bitmap videoimg = (Bitmap)_cam1.GetImage().Image.Clone(); FileWriter.WriteVideoFrame(videoimg, frameOffset); FileWriter.Flush(); videoimg.Dispose(); if (checkBox_csv.Checked) { double[,] pixel_array = _cam1.GetImage().ImageProcessing.GetPixelsArray(); //array containing the raw signal data Thread t_thread = new Thread(() => SaveToCsv(pixel_array)); t_thread.Start(); } } } catch (Exception) { } finally { // We are done with the image data object, release. _cam1.GetImage().ExitLock(); //IsSrc1Dirty = false; } } } }
private void video_NewFrame_ori(object sender, NewFrameEventArgs eventArgs) { videoimg = (Bitmap)eventArgs.Frame.Clone(); //_readWriteLock.EnterWriteLock(); try { if (m_startrecording && FileWriter.IsOpen && videoimg != null) { //FileWriter.WriteVideoFrame(videoimg); FileWriter.WriteVideoFrame(videoimg); FileWriter.Flush(); } pictureBox1.Image = videoimg; } catch { Console.WriteLine("object is used somewhere else 2"); } finally { //_readWriteLock.ExitWriteLock(); } m_framelist.Add(videoimg); if (m_framelist.Count > 50)//100 { m_framelist[0].Dispose(); m_framelist.RemoveAt(0); } if (!m_startrecording && FileWriter.IsOpen) { //FileWriter.Close(); //_readWriteLock.EnterWriteLock(); try { FileWriter.Close(); Console.WriteLine("stop recording"); } finally { //_readWriteLock.ExitWriteLock(); } } }
public void StopRecording() { captureDevice.NewFrame -= CaptureDevice_NewFrame; writerSet = false; captureDevice.SignalToStop(); fileWriter.Flush(); }
// Closes the video source public void CloseVideoSource() { // If the video source player exists and is running if (videoSourcePlayer != null && videoSourcePlayer.IsRunning) { // Stop the source and set the object to null videoSourcePlayer.Stop(); if (videoSourcePlayer.VideoSource != null) { if (videoSourcePlayer.VideoSource.IsRunning) { videoSourcePlayer.VideoSource.Stop(); videoSourcePlayer.VideoSource.WaitForStop(); } videoSourcePlayer.VideoSource = null; } } // If the video writer isn't null, flush its output and close it if (vwriter != null && vwriter.IsOpen) { vwriter.Flush(); vwriter.Close(); } }
void _updateGuiTimer_Tick(object sender, EventArgs e) { m_second += m_timerinterval; if (IsSrc1Dirty && _cam1 != null) { // a refresh is needed of source 1 try { // always lock image data to prevent accessing of the image from other threads. _cam1.GetImage().EnterLock(); pictureBoxSource1.Image = _cam1.GetImage().Image; videoimg = (Bitmap)_cam1.GetImage().Image; //byte[] arr = GetBytesOfImage(videoimg); // save image to file if (m_startrecording && FileWriter.IsOpen) { FileWriter.WriteVideoFrame(videoimg, TimeSpan.FromMilliseconds(m_second)); FileWriter.Flush(); } } catch (Exception) { } finally { // We are done with the image data object, release. _cam1.GetImage().ExitLock(); IsSrc1Dirty = false; } } }
private void video_NewFrame_2nd(object sender, NewFrameEventArgs eventArgs) { if (m_duplicate) { videoimg = (Bitmap)eventArgs.Frame.Clone(); m_framelist.Add(videoimg); if (m_framelist.Count > 100) { m_framelist[0].Dispose(); m_framelist.RemoveAt(0); } } else { Bitmap t_frame = videoimg; videoimg = (Bitmap)eventArgs.Frame.Clone(); if (t_frame != null) { t_frame.Dispose(); } } //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); try { //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); // save image to file if (m_startrecording && FileWriter.IsOpen && videoimg != null) { FileWriter.WriteVideoFrame(videoimg); FileWriter.Flush(); } pictureBox1.Image = videoimg; } catch { Console.WriteLine("object is used somewhere else"); } }
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { videoimg = (Bitmap)eventArgs.Frame.Clone(); //do processing here pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); // save image to file if (m_startrecording) { FileWriter.WriteVideoFrame(videoimg); FileWriter.Flush(); } }
private static void CreateMovies(Bitmap[] movieFrames, int resolution, string outDirectory, int offset, DateTime startTime) { string outDir = Path.Combine(outDirectory, resolution.ToString(), offset.ToString(), startTime.Year.ToString(), startTime.Month.ToString(), startTime.Day.ToString(), startTime.Hour.ToString(), startTime.Minute.ToString(), startTime.Second.ToString(), "SDO_AIA_171"); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } int slizes = resolution / MOVIE_WIDTH; for (int x = 0; x < slizes; x++) { for (int y = 0; y < slizes; y++) { // ToDo: DAte info also as folder Hierarchy? using (VideoFileWriter video = new VideoFileWriter()) { video.Open(Path.Combine(outDir, $"{startTime.ToString("FF")}__{x}_{y}.mp4"), MOVIE_WIDTH, MOVIE_WIDTH, 32, VideoCodec.H264, 1024 * 1024); Rectangle region = new Rectangle(x * MOVIE_WIDTH, y * MOVIE_WIDTH, MOVIE_WIDTH, MOVIE_WIDTH); for (int i = 0; i < movieFrames.Length; i++) { using (Bitmap frame = movieFrames[i].Clone(region, movieFrames[i].PixelFormat)) { //Console.Write(i + ","); video.WriteVideoFrame(frame); } } //Console.WriteLine(); video.Flush(); } } } }
private void timer1_Tick(object sender, EventArgs e) { if (IsSrc1Dirty && _cam1 != null) { //Console.Write("count" + ncount++); // a refresh is needed of source 1 try { // always lock image data to prevent accessing of the image from other threads. _cam1.GetImage().EnterLock(); pictureBoxSource1.Image = _cam1.GetImage().Image; // save image to file if (m_startrecording && FileWriter.IsOpen) { //StartTick; long currentTick = DateTime.Now.Ticks; var frameOffset = new TimeSpan(currentTick - StartTick); //videoimg = (Bitmap)_cam1.GetImage().Image; videoimg = (Bitmap)pictureBoxSource1.Image.Clone(); FileWriter.WriteVideoFrame(videoimg, frameOffset); //Console.Write("timespan"+m_second); //FileWriter.WriteVideoFrame(videoimg); FileWriter.Flush(); if (checkBox_csv.Checked) { double[,] pixel_array = _cam1.GetImage().ImageProcessing.GetPixelsArray(); //array containing the raw signal data Thread t_thread = new Thread(() => SaveToCsv(pixel_array)); t_thread.Start(); } } } catch (Exception) { } finally { // We are done with the image data object, release. _cam1.GetImage().ExitLock(); //IsSrc1Dirty = false; } } }
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { videoimg = (Bitmap)eventArgs.Frame.Clone(); //do processing here try { pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone(); // save image to file if (m_startrecording && FileWriter.IsOpen) { FileWriter.WriteVideoFrame(videoimg); FileWriter.Flush(); } } catch { Console.WriteLine("object is used somewhere else"); } }
public static void Run(string videoPath, string videoName) { var reader = new VideoFileReader(); reader.Open(videoPath + videoName); var writer = new VideoFileWriter(); var numberOfFrames = (int)reader.FrameCount; var probeBitmap = new FastBitmap(reader.ReadVideoFrame(0)); probeBitmap.LockBits(); var maxValues = CalcMaxValues(probeBitmap.Width, probeBitmap.Height); var maxX = maxValues.Item1; var maxY = maxValues.Item2; //Console.WriteLine($"{maxX}:{maxY}"); writer.Height = probeBitmap.Height; writer.Width = probeBitmap.Width; writer.FrameRate = 30; writer.VideoCodec = VideoCodec.Mpeg4; writer.BitRate = reader.BitRate; writer.Open(videoPath + "out.avi"); for (var t = 70; t < numberOfFrames; t++) { var convertedBitmap = new FastBitmap(new Bitmap(probeBitmap.Width, probeBitmap.Height)); FastBitmap currentBitmap; try { currentBitmap = new FastBitmap(reader.ReadVideoFrame(t)); } catch (Exception ignored) { break; } convertedBitmap.LockBits(); currentBitmap.LockBits(); for (var x = 0; x < probeBitmap.Width; x++) { for (var y = 0; y < probeBitmap.Height; y++) { var pixel = ConvertToPolar(x - probeBitmap.Width / 2, y - probeBitmap.Height / 2); var convX = FastUtils.FastAbs((int)(pixel.Item2 / maxY * (probeBitmap.Width - 1))); var convY = FastUtils.FastAbs((int)(pixel.Item1 / maxX * (probeBitmap.Height - 1))); convertedBitmap.SetPixel(convX, convY, currentBitmap.GetPixel(x, y)); } } Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 4; i++) { convertedBitmap = CompleteBitmap(convertedBitmap); } sw.Stop(); Console.WriteLine(sw.Elapsed); currentBitmap.UnlockBits(); currentBitmap.DisposeSource(); convertedBitmap.GetSource().Save(videoPath + "test.png"); break; //convertedBitmap.RotateFlip(RotateFlipType.RotateNoneFlipX); writer.WriteVideoFrame(convertedBitmap.GetSource()); convertedBitmap.DisposeSource(); } probeBitmap.UnlockBits(); writer.Flush(); }