public void Start() { //mStream.Start(); // create new AVI file and open it mAviWriter.Open("test.avi", mBitmap.Width, mBitmap.Height); mAviWriter.AddFrame(mBitmap); }
private void makeVideo(object _param) { isNowVideoSaving = true; photoThreadsCounter++; VideoParameters param = (VideoParameters)_param; Accord.Video.VFW.AVIWriter wr; wr = new AVIWriter(); wr.FrameRate = Convert.ToInt32(param.FPS); wr.Open(param.path, 2 * param.halfWidth, 2 * param.halfHeight); int frameCount = param.movie.frameCount(); for (int i = 0; i < frameCount; i++) { wr.AddFrame(param.movie[i].getFrame(param.halfWidth, param.halfHeight, grid)); Console.WriteLine("Frame {0} out of {1} is done!", i + 1, frameCount); statusFrames = String.Format("{0}/{1}", i + 1, frameCount); } wr.Close(); photoThreadsCounter--; isNowVideoSaving = false; statusFrames = ""; }
private void Camera_NewFrame(object sender, EventArgs e) { if ((intervalsToSave != 0) && (saveOnMotion == true)) { // lets save the frame if (writer == null) { string fileName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".avi"; try { writer = new AVIWriter("wmv3"); // create AVI writer writer.Open(fileName, _CameraWindow.Camera.Width, _CameraWindow.Camera.Height); // open AVI file } catch (ApplicationException ex) { if (writer != null) { writer.Dispose(); writer = null; } } } Camera camera = _CameraWindow.Camera; // save the frame camera.Lock(); writer.AddFrame(camera.LastFrame); camera.Unlock(); } }
public void cam_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap image = (Bitmap)eventArgs.Frame.Clone(); writer.AddFrame(image); pictureBox1.Image = image; }
void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) { currentFrame = (Bitmap)eventArgs.Frame.Clone(); browserFrame = (Bitmap)eventArgs.Frame.Clone(); if ((captureThread == null || !captureThread.IsAlive) && recordVideo) { Bitmap threadFrame = (Bitmap)currentFrame.Clone(); captureThread = new Thread( new ThreadStart( delegate { writer.AddFrame(threadFrame); })); captureThread.Start(); } if ((browserThread == null || !browserThread.IsAlive) && browserRunning) { browserThread = new Thread(new ThreadStart(BrowserSnapshot)); browserRunning = true; browserThread.Start(); } CaptureBox.Invoke( new Action( delegate { CaptureBox.Image = currentFrame; })); }
private void aviSaveAs() { try { OleDbConnection conn = bc.GetConn(); conn.Open(); OleDbCommand cmd = new OleDbCommand("select strPath from tb_VideoPath where ID=1", conn); string str = cmd.ExecuteScalar().ToString().Trim(); FileInfo fi = new FileInfo(str); if (fi.Exists) { fi.Delete(); } conn.Close(); aviWriter = new AVIWriter(); //avi中所有图像皆不能小于width及height avi_frame = aviWriter.Create(str, 1, SWidth, SHeight); for (int i = 0; i < al.Count; i++) { //获得图像 Bitmap cache = new Bitmap(Image.FromFile(al[i].ToString())); //由于转化为avi后呈现相反,所以翻转 cache.RotateFlip(RotateFlipType.Rotate180FlipX); //载入图像 aviWriter.LoadFrame(cache); aviWriter.AddFrame(); } aviWriter.Close(); avi_frame.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void recordVideo() { AVIWriter writer = new AVIWriter("wmv3"); writer.Open("test.avi", 320, 240); Bitmap image = new Bitmap(320, 240); for (int i = 0; i < 240; i = i + 5) { if (i == 235) { break; } if (i > 4) { image.SetPixel(i - 1, i - 1, Color.Black); image.SetPixel(i - 2, i - 2, Color.Black); image.SetPixel(i - 3, i - 3, Color.Black); image.SetPixel(i - 4, i - 4, Color.Black); image.SetPixel(i - 5, i - 5, Color.Black); } image.SetPixel(i, i, Color.Red); image.SetPixel(i + 1, i + 1, Color.Red); image.SetPixel(i + 2, i + 2, Color.Red); image.SetPixel(i + 3, i + 3, Color.Red); image.SetPixel(i + 4, i + 4, Color.Red); writer.AddFrame(image); } writer.Close(); }
private void SaveAnimationButton_Click(object sender, EventArgs e) { if (bitmaps.Count == 0) { MessageBox.Show(StringResources.NoFrame); return; } SaveFileDialog sfd = new SaveFileDialog(); sfd.DefaultExt = "avi"; sfd.AddExtension = true; sfd.Filter = "(*.avi)|*.avi"; if (sfd.ShowDialog() == DialogResult.OK) { AVIWriter aw = new AVIWriter("MSVC"); aw.FrameRate = Settings.framerate; aw.Open(sfd.FileName, FrameWidth, FrameHeight); for (int j = 0; j < bitmaps.Count; j++) { Bitmap bitmap = (Bitmap)bitmaps[j].Clone(); double secs = FrameDurations[j]; for (int i = 0; i < secs * Settings.framerate; i++) { aw.AddFrame(bitmap); } } aw.Quality = 1; aw.Close(); } }
private void GrabarVideo() { AVIWriter grabadorVideo = new AVIWriter(); try { Bitmap imagen = Camaras.CapturarImagen(visorCamara1); DateTime Hoy = DateTime.Now; string fecha_actual = Hoy.ToString("dd-MM-yyyy HH-mm-ss"); grabadorVideo.Open(rutaCapturas + "\\video_" + fecha_actual + ".avi", imagen.Width, imagen.Height); while (true) { if (grabandoVideo1) { grabadorVideo.AddFrame(Camaras.CapturarImagen(visorCamara1)); Thread.Sleep(50); } else { break; } } grabadorVideo.Close(); } catch (Exception) { grabadorVideo.Close(); } }
//write .avi and store data in .xml for a certain frame private void writeFrame(ReplayAllFramesReadyEventArgs e) { //colour frame BitmapImage bitmapImage_currentframe = new BitmapImage(); Bitmap bitmap_currentframe = new Bitmap(640, 480); var colorImageFrame = e.AllFrames.ColorImageFrame; if (colorImageFrame != null) { if (isfirst) { initialframenumber = colorImageFrame.FrameNumber; System.Console.WriteLine("initialFramenumber = " + initialframenumber); isfirst = false; } lastframenumber = colorImageFrame.FrameNumber; //write xml xmlwriter.storeframe(e.AllFrames.SkeletonFrame, colorImageFrame.FrameNumber, replay.CoordinateMapper); //write avi var pixelData = new byte[colorImageFrame.PixelDataLength]; colorImageFrame.CopyPixelDataTo(pixelData); var stride = colorImageFrame.Width * PixelFormats.Bgr32.BitsPerPixel / 8; //converision to bitmap imagesource.WritePixels(new Int32Rect(0, 0, colorImageFrame.Width, colorImageFrame.Height), pixelData, stride, 0); bitmapImage_currentframe = ConvertWriteableBitmapToBitmapImage(imagesource); bitmap_currentframe = ConvertBitmapImageToBitmap(bitmapImage_currentframe); videoWriter.AddFrame(bitmap_currentframe); framecounter++; } }
private void webCam_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs) { pictureBox1.BackgroundImage = (Bitmap)eventArgs.Frame.Clone(); if (saveVideo != null) { saveVideo.AddFrame((Bitmap)eventArgs.Frame.Clone()); } }
private void videoStream_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap frameData = new Bitmap(eventArgs.Frame); frameData.RotateFlip(RotateFlipType.Rotate180FlipNone); pbCameraView.Image = frameData; videoWriter.AddFrame((Bitmap)frameData.Clone()); }
public static void AddBmpInAvi(Image bmp) { using (Bitmap b = ScreenModel.GetPicThumbnail(bmp, 80).ToBitmap()) { b.SetPixel(0, 0, Color.Red); avi.AddFrame(b); } }
//private void jpgToAVIByFFpeg(String[] pic, String newPic, int delayTime) //{ // int frameRate = 25; // if (delayTime > 0) // frameRate = Convert.ToInt32(1000f / delayTime); // VideoFileWriter writer = new VideoFileWriter(); // Image im; // if (tVLeft.Nodes.Count > 0) // { // im = Image.FromFile(tVLeft.Nodes[0].Name.ToString()); // int w = im.Width; // int h = im.Height; // progressBar1.Maximum = tVLeft.Nodes.Count; // if (w % 2 != 0) // w += 1; // if (h % 2 != 0) // h += 1; // writer.Open(newPic, w, h, frameRate, VideoCodec.MPEG4); // for (int i = 0; i < tVLeft.Nodes.Count; i++) // { // im.Dispose(); // im = Image.FromFile(tVLeft.Nodes[i].Name.ToString()); // im = BitmapToBlowUp(im, w, h); // this.pictureBox1.Image = im; // this.pictureBox1.Refresh(); // if ((im.Height != h) | (im.Width != w)) // MessageBox.Show(tVLeft.Nodes[i].Name.ToString() + " 文件大小与首张不符!"); // writer.WriteVideoFrame((Bitmap)im); // progressBar1.Value += 1; // curFile.Text = i.ToString() + ">>> " + getFileNameOnly(pic[i]); // curFile.Refresh(); // } // writer.Close(); // writer.Dispose(); // MessageBox.Show("AVI 动画文件转换完毕!"); // } //} // FFPEG 类生成AVI,使用 MPG4 格式压缩 // 如果使用 FFPEG 类,则需要: // 1、引用如下类库: // AForge.Video.FFMPEG // 2、将如下类库 Copy 到目标程度所在文件夹,如 bin\debug 等。 // AForge.Net FrameWork \Externals\FFMPEG\BIN文件夹下的所有 DLL 文件 // avcodec-53.dll,avdevice-53.dll,avfilter-2.dll,avformat-53.dll,avutil-51.dll,postproc-52.dll,swresample-0.dll,swscale-2.dll private void jpgToAVI(String[] pic, String newPic, int delayTime) { int frameRate = 25; if (delayTime > 0) { frameRate = Convert.ToInt32(1000f / delayTime); } AVIWriter aviWriter = new AVIWriter("wmv3"); aviWriter.FrameRate = frameRate; Image im; if (tVLeft.Nodes.Count > 0) { im = Image.FromFile(tVLeft.Nodes[0].Name.ToString()); int w = im.Width; int h = im.Height; progressBar1.Maximum = tVLeft.Nodes.Count; if (w % 2 != 0) { w += 1; } if (h % 2 != 0) { h += 1; } aviWriter.Open(newPic, w, h); // 输出到指定的文件 for (int i = 0; i < tVLeft.Nodes.Count; i++) { im.Dispose(); im = Image.FromFile(tVLeft.Nodes[i].Name.ToString()); im = BitmapToBlowUp(im, w, h); this.pictureBox1.Image = im; this.pictureBox1.Refresh(); if ((im.Height != h) | (im.Width != w)) { MessageBox.Show(tVLeft.Nodes[i].Name.ToString() + " 文件大小与首张不符!"); } aviWriter.AddFrame((Bitmap)im); progressBar1.Value += 1; curFile.Text = i.ToString() + ">>> " + getFileNameOnly(pic[i]); curFile.Refresh(); } aviWriter.Close(); aviWriter.Dispose(); MessageBox.Show("AVI 动画文件转换完毕!"); } } // WMV3 格式压缩
private void StartConsumerThread() { if (!IsWorking) { IsWorking = true; Helpers.CreateDirectoryIfNotExist(OutputPath); AVIWriter aviWriter = new AVIWriter(OutputPath, FPS, Size.Width, Size.Height, ShowOptions); task = TaskEx.Run(() => { try { position = 0; while (!imageQueue.IsCompleted) { Image img = null; try { img = imageQueue.Take(); if (img != null) { //img.Save("Test\\" + position + ".bmp", ImageFormat.Bmp); aviWriter.AddFrame((Bitmap)img); position++; } } catch (InvalidOperationException) { } finally { if (img != null) { img.Dispose(); } } } } finally { IsWorking = false; if (aviWriter != null) { aviWriter.Dispose(); } } }); } }
public void AddFrame(IFrame frame) { if (videoStream != null) { videoStream.Write(frame.Buffer, 0, frame.Buffer.Length); } else { videoWriter.AddFrame(frame.ToBitmap()); } }
public void Record(Bitmap frame) { // int width = frame.Width - (frame.Width % 2); // int height = frame.Width - (frame.Height % 2); if (!isRecording) { isRecording = true; writer.Open(@"C:\Users\navar\OneDrive\Pictures\FaceDetection\Face-" + numOfImg + ".avi", frame.Width, frame.Height); } writer.AddFrame(frame); }
public void saveFrame(byte[] buffer) { // precompressed mode used in trim function where frame are copied from one file to another if (maxFrames > 0 && writeFrameCount > maxFrames) { Console.WriteLine("MaxFrames exceeded"); return; } if (aviWriter != null) { Bitmap bitmap = new Bitmap(640, 480, PixelFormat.Format32bppArgb); BitmapData bmData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, bitmap.PixelFormat); IntPtr pNative = bmData.Scan0; Marshal.Copy(buffer, 0, pNative, frameWidth * frameHeight * frameChannels); bitmap.UnlockBits(bmData); aviWriter.AddFrame(bitmap); } else if (frameWriter != null) { //pos = (Int32)frameWriter.BaseStream.Position; - didn't match the actual position due to streaming // acutally think it was okay now but the count the buffer length is cleaner anyhow. if (maxSizeMb > 0) { if ((writePos >> 20) > maxSizeMb) { Console.WriteLine("MaxSize exceeded"); return; } } buffer = edgeFilter(buffer); if (toCompress) { if (fileName.EndsWith(".vgz")) { //gzframeWriter.Write(buffer, 0, buffer.Length); // } //buffer = compressIntoMs.ToArray(); buffer = gzCompress(buffer); } else { buffer = rleCompress(buffer); } } frameWriter.Write(buffer); writePos += buffer.Length; writeFramePosList.Add(writePos); writeFrameCount++; } }
public void sendFrame(Bitmap frame, string Name) { if (alarmInterval > 0) { if (!audioPlayed && options.EnableAlertSound) { try { Log.debug(String.Format("Playing audio file {0} for camera {1}", options.AlertSoundFile, options.Name)); audioPlayed = true; SoundPlayer simpleSound = new SoundPlayer(options.AlertSoundFile); simpleSound.Play(); } catch (Exception e) { Log.error(String.Format("Unable to play audio file for {0}. Error: {1}", options.Name, e.Message)); } } if (recording && options.EnableRecording && frameDropThreshold <= MAX_FRAME_DROP) { try { if (videoWriter == null) { DateTime now = DateTime.Now; string file = String.Format("{0}-{1:D4}.{2:D2}.{3:D2}-{4:D2}.{5:D2}.{6:D2}.avi", options.Name, now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second); string fullpath = Path.Combine(options.RecordFolder, file); Log.debug(String.Format("Creating new Video Writer {0} with codec {1}", fullpath, options.Codec)); videoWriter = new AVIWriter(options.Codec.Code); videoWriter.Open(fullpath, frame.Width, frame.Height); } videoWriter.AddFrame(frame); } catch (Exception io) { frameDropThreshold++; videoWriter = null; Log.warn(String.Format("Error writing video frame for {0}. Record Folder: {1}. Message: {2}", options.Name, options.RecordFolder, io.Message)); if (frameDropThreshold == MAX_FRAME_DROP) { Log.error(String.Format("Maximum ({0}) frames failed for {1}. Dropping all frames until next motion alert", MAX_FRAME_DROP, options.Name)); } } } } }
private void btnRecord_Click(object sender, EventArgs e) { AVIWriter writer = new AVIWriter("wmv3"); writer.Open("test.avi", 320, 240); Bitmap image = new Bitmap(320, 240); for (int i = 0; i < 240; i++) { image.SetPixel(i, i, Color.Red); writer.AddFrame(image); } writer.Close(); }
private void _videoSource_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs) { try { if (_writeData && _writer != null) { //_writer.AddFrame((Bitmap)eventArgs.Frame.Clone()); _writer.AddFrame(eventArgs.Frame); } } catch (Exception r) { throw; } try { if (!_writeData) { //if (pictureBoxVideo.BackgroundImage != null && _videoSource != null) // this.Invoke(new MethodInvoker(delegate() { pictureBoxVideo.BackgroundImage.Dispose(); })); Bitmap bitmap = new Bitmap((Bitmap)eventArgs.Frame.Clone(), pictureBoxVideo.Width, pictureBoxVideo.Height); if (!_writeData) { pictureBoxVideo.BackgroundImage = bitmap; } if (_experiment != null) { if (_experiment.pictureBoxSetupCamera != null) { if (!_writeData) { _experiment.pictureBoxSetupCamera.BackgroundImage = bitmap; } } } } } catch (ObjectDisposedException e) { int j = 0; } catch (Exception r) { throw; } }
/*Evento que se disp-ara cada vez que se cambia un cuadro del videoSourcePlayer */ private void videoSourcePlayer1_NewFrame(object sender, ref Bitmap image) { MessageBox.Show("hola"); if (!detectarMovimiento) //Si no está detectada la detección de movimiento, grabamos sin fijarnos en el movimiento { //Si se ha iundicado que grabe, entonces guardará cada cambio en el vídeo if (estaGrabando) { writer.AddFrame(image); } } else //Si está habilitdada la detección de movimiento { if (estaGrabando) //Si hemos indicado que grabe { //Grabamos si el sistema detecta movimiento int nivelSensibilidad = 1 / (20 * sensibilidad); if (detectorDeMovimiento.ProcessFrame(image) > nivelSensibilidad) { writer.AddFrame(image); } } } }
void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) { currentFrame = (Bitmap)eventArgs.Frame.Clone(); if ((captureThread == null || !captureThread.IsAlive) && recordVideo) { writer.Open("test.avi", 320, 240); Bitmap threadFrame = (Bitmap)currentFrame.Clone(); for (int i = 0; i < 240; i++) { writer.AddFrame(threadFrame); } writer.Close(); } pictureBox1.Invoke(new Action(delegate { pictureBox1.Image = currentFrame; })); }
private void timer1_Tick(object sender, EventArgs e) { DateTime time = DateTime.Now; string Body = string.Empty; var ffMpeg = new FFMpegConverter(); txt_time.Text = time.ToLongTimeString(); if (IsRecording) { if (time < time_stop) { lblGrabar.Visible = true; lblGrabar.Text = "Grabando hasta " + time_stop.ToLongTimeString(); //Bitmap Imagen = (Bitmap)pcb_video.Image; writer.AddFrame(video); //FileWriter.WriteVideoFrame(video); if (time < time_stop.AddSeconds(-8)) { //txtMensajes.Text += "Capturando la foto con imagen de movimiento" + "\r\n"; PhotoFileName = "C:/Users/Alex/Desktop/DEMO/photo_" + DateTime.Now.ToShortDateString().Replace("/", "-") + DateTime.Now.ToShortTimeString().Replace(":", "_") + ".png"; foto.Save(PhotoFileName, System.Drawing.Imaging.ImageFormat.Png); } } else { txtMensajes.Text += "Fin de la grabación...!" + "\r\n"; writer.Close(); pcb_video.Image = Properties.Resources.offline; //FileWriter.Close(); txtMensajes.Text += "Compresión de video...!" + "\r\n"; ffMpeg.ConvertMedia(VideoFileName, VideoFileName.Replace(".avi", ".mp4"), Format.mp4); txtMensajes.Text += "Intentando subir video a servidor de almacenamiento externo...!" + "\r\n"; subirArchivo(VideoFileName.Replace(".avi", ".mp4")); txtMensajes.Text += "Video " + this.UploadFileName.Substring(8, UploadFileName.Length - 8) + " cargado a servidor de almacenamiento externo...!" + "\r\n"; txtMensajes.Text += "Envío de e-mail...!" + "\r\n"; Body = "<a href='https://dl.dropboxusercontent.com/u/72924944/" + this.UploadFileName.Substring(8, UploadFileName.Length - 8) + "'>VIDEO</a>" + "<p>" + "<a href='mailto:[email protected][email protected]&subject=Ignorar%20Evento&body=Se%20ha%20detectado%20movimiento%20en%20el%20sistema%20de%20seguridad%2C%20pero%20Ud.%20ha%20decidido%20ignorar%20este%20evento.%20El%20sistema%20detendr%C3%A1%20el%20servicio%20por%2030%20Minutos.'>IGNORAR</a>"; enviar_Correo("*****@*****.**", "ALERTA - Sistema de Seguridad ha detectado movimiento", Body); IsRecording = false; lblGrabar.Visible = false; time_stop = DateTime.MinValue; } } }
private void process() { if (frame == null) { return; } //OilPainting op = new OilPainting(); /* * Pixellate p = new Pixellate(); * SaturationCorrection sc = new SaturationCorrection(0.5); * BrightnessCorrection bc = new BrightnessCorrection(0.5); * HueModifier hm = new HueModifier(50);*/ Bitmap cannedFrame = frame; if (hueBar.Value != 0) { new HueModifier(hueBar.Value).ApplyInPlace(cannedFrame); } if (satBar.Value != 0) { new SaturationCorrection(satBar.Value / 100.0).ApplyInPlace(cannedFrame); } if (brightnessBar.Value != 0) { new BrightnessCorrection(brightnessBar.Value / 100.0).ApplyInPlace(cannedFrame); } if (pixBar.Value != 0) { new Pixellate(pixBar.Value).ApplyInPlace(cannedFrame); } pictureBox1.Image = cannedFrame; if (recording) { if (paused) { statusTxt.Text = "Paused... " + aviWriter.Position + " frames taken"; } else { aviWriter.AddFrame(cannedFrame); statusTxt.Text = "Recording... " + aviWriter.Position + " frames taken"; } } }
public void VideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) { try { lock (sync) { if (CaptureVideo && canCapture) { Bitmap newFrame = FilpImage((Bitmap)eventArgs.Frame.Clone()); // dispose previous frame if (videoFrame != null) { videoFrame.Dispose(); videoFrame = null; } videoFrame = newFrame; this.Picture = videoFrame; AVIwriter.Quality = 0; AVIwriter.AddFrame(videoFrame); } else { Bitmap newFrame = FilpImage((Bitmap)eventArgs.Frame.Clone()); // dispose previous frame if (videoFrame != null) { videoFrame.Dispose(); videoFrame = null; } videoFrame = newFrame; this.Picture = videoFrame; } } } catch (Exception ex) { } }
void stream_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); bmp.RotateFlip(RotateFlipType.Rotate90FlipNone); pictureBox1.Image = bmp; try { if (toggleRec == true) { bmp = (Bitmap)eventArgs.Frame.Clone(); bmp.RotateFlip(RotateFlipType.Rotate90FlipNone); writer.AddFrame(bmp); } } catch (Exception e) { } }
static void Main(string[] args) { foreach (FilterInfo videoDevice in new FilterInfoCollection(FilterCategory.VideoInputDevice)) { Console.WriteLine(videoDevice.Name); } FilterInfo codec = null; foreach (FilterInfo videoDevice in new FilterInfoCollection(FilterCategory.VideoCompressorCategory)) { codec = videoDevice; Console.WriteLine(videoDevice.Name); } // instantiate AVI writer, use WMV3 codec AVIWriter writer = new AVIWriter(codec.MonikerString); // create new AVI file and open it writer.Open("test.avi", 320, 240); // create frame image Bitmap image = new Bitmap(320, 240); int j = 1; for (int i = 0; i < 240; i++) { // update image image.SetPixel(i, i, Color.Red); // add the image as a new frame of video file writer.AddFrame(image); j = j == 1 ? -1 : 1; } //Bitmap bitmap = Image.FromFile("Files/grab.mjpeg"); //writer.AddFrame(bitmap); writer.Close(); }
public void AddFrame(Bitmap frame) { lock (aviWatchDog) { try { if (frame == null) { currentAvi.AddEmptyFrame(); } else { currentAvi.AddFrame(frame); } } catch (Exception e) { Reporter.UnseriousError(e.Message); } } }
// On new frame private void Camera_NewFrame(object sender, System.EventArgs e) { if ((intervalsToSave != 0) && (saveOnMotion == true)) { // lets save the frame if (writer == null) { // create file name DateTime date = DateTime.Now; String fileName = String.Format("{0}-{1}-{2} {3}-{4}-{5}.avi", date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second); try { // create AVI writer writer = new AVIWriter("wmv3"); // open AVI file writer.Open(fileName, cameraWindow.Camera.Width, cameraWindow.Camera.Height); } catch (ApplicationException) { if (writer != null) { writer.Dispose( ); writer = null; } } } // save the frame Camera camera = cameraWindow.Camera; camera.Lock( ); writer.AddFrame(camera.LastFrame); camera.Unlock( ); } }
private void StartConsumerThread() { if (!IsWorking) { IsWorking = true; Helpers.CreateDirectoryIfNotExist(OutputPath); AVIWriter aviWriter = new AVIWriter(OutputPath, FPS, Size.Width, Size.Height, ShowOptions); task = TaskEx.Run(() => { try { position = 0; while (!imageQueue.IsCompleted) { Image img = null; try { img = imageQueue.Take(); if (img != null) { //img.Save("Test\\" + position + ".bmp", ImageFormat.Bmp); aviWriter.AddFrame((Bitmap)img); position++; } } catch (InvalidOperationException) { } finally { if (img != null) img.Dispose(); } } } finally { IsWorking = false; if (aviWriter != null) { aviWriter.Dispose(); } } }); } }