private void btnStartStopVideo_Click(object sender, EventArgs e) { if (lbCameras.SelectedIndex < 0) { MessageBox.Show("当前没有选择相机,请先选择一个相机!"); return; } if (videoStream.IsRunning) { videoStream.Stop(); videoWriter.Close(); // 保存视频文件 File.Move("_video_saved\\recording.avi", string.Format("_video_saved\\{0}-{1}.avi", curCamera.ToString(), DateTime.Now.ToString("yyyy-MM-dd_HH.mm.ss"))); curCamera = null; timerGetData.Stop(); // 关闭同时关闭计时器 pbCameraView.Image = global::Monitor.Properties.Resources.no_video; btnStartStopVideo.Text = "显示视频"; btnStartStopVideo.BackColor = Color.LightGreen; labelVideoInfo.Text = "请先在左侧选择相机,然后点击“显示视频”"; } else { curCamera = cameras[lbCameras.SelectedIndex]; videoStream.Source = string.Format(videoUrlFormatter, curCamera.ip, curCamera.port); videoStream.Start(); videoWriter.Open("_video_saved\\recording.avi", 352, 288); // 创建视频文件 timerGetData.Start(); // 启动同时开始计时器 btnStartStopVideo.Text = "关闭视频"; btnStartStopVideo.BackColor = Color.LightCoral; labelVideoInfo.Text = curCamera.ToFullString(); } }
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 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 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(); } }
private void video_NuevoFrame(object sender, NewFrameEventArgs eventArgs) { //entra aqui mientras no se haya detectado movimiento Bitmap Imagen = (Bitmap)eventArgs.Frame.Clone(); video = (Bitmap)eventArgs.Frame.Clone(); if (detector != null) { Single motionLevel = detector.ProcessFrame(Imagen); if (motionLevel > motionAlarmLevel) { //"Si hay Movimiento"; if (!IsRecording && timeLeft <= 0) { //txtMensajes.Text += "Inicio de grabación...! " + "\r\n"; time_stop = DateTime.Now.AddSeconds(10); IsRecording = true; VideoFileName = "C:/Users/Alex/Desktop/DEMO/video_" + DateTime.Now.ToShortDateString().Replace("/", "-") + DateTime.Now.ToShortTimeString().Replace(":", "_") + ".avi"; writer.Open(VideoFileName, video.Width, video.Height); //FileWriter.Open("D:/video.avi", 320, 240, 25, VideoCodec.MPEG4, 5000000); } } else { //"No hay Movimiento"; foto = (Bitmap)eventArgs.Frame.Clone(); } pcb_video.Image = Imagen; } }
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(); }
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 button3_Click(object sender, EventArgs e) { if (recording) { aviWriter.Close(); recordBtn.Text = "Start Recording"; recording = false; statusTxt.Text = "Stopped."; contBtn.Enabled = false; pauseBtn.Enabled = false; } else { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Audio Video Interleave File | *.avi"; DialogResult result = sfd.ShowDialog(); if (result == DialogResult.OK) { statusTxt.Text = "Recording..."; aviWriter.Close(); String file = sfd.FileName; aviWriter.Open(file, pictureBox1.Size.Width, pictureBox1.Size.Height); recordBtn.Text = "Stop Recording"; recording = true; paused = false; pauseBtn.Enabled = true; } } }
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(); } }
private void RecordButton_Click(object sender, EventArgs e) { if (!recordVideo) { SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "Plik AVI (*.avi)|*.avi"; dialog.FilterIndex = 1; dialog.RestoreDirectory = true; if (dialog.ShowDialog() == DialogResult.OK) { writer = new AVIWriter("cvid"); writer.FrameRate = 5; var width = videoSource.VideoResolution.FrameSize.Width; var height = videoSource.VideoResolution.FrameSize.Height; writer.Open(dialog.FileName, width, height); recordVideo = true; RecordButton.Name = "Stop recording"; } } else { recordVideo = false; captureThread.Join(); writer.Close(); RecordButton.Name = "Recording"; } }
//generate files for analyser private void generate_initialization() { var openFileDialog = new OpenFileDialog { Title = "Select filename", Filter = "Replay files|*.replay" }; if (openFileDialog.ShowDialog() == true) { //get the pure filename(without path and extension) string path = openFileDialog.FileName; string filename = openFileDialog.SafeFileName; System.Console.WriteLine("path = " + path + "purepath= "); string pathwithoutextension = path.Remove(path.IndexOf('.')); replay = new KinectReplay(openFileDialog.FileName); message = string.Format("Replaying {0}", RecordOptions.ToString()); videoWriter.FrameRate = 30; videoWriter.Open(pathwithoutextension + ".avi", 640, 480); //xmlwriter xmlwriter = new XMLWriter(pathwithoutextension + "_jointsdata.xml", pathwithoutextension + "_keyframes.xml", filename); IsGenerating = true; replay.AllFramesReady += ReplayAllFramesReady; replay.ReplayFinished += CleanupGeneration; replay.Start(); generationstatus.Content = "generating analysis files, please wait"; } }
//视频录制函数 public void RecordOpen() { DateTime date = DateTime.Now; String fileName = String.Format("{0}-{1}-{2} {3}-{4}-{5}", date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second); aviWriter.Open(String.Format(".\\SmartVision\\视频\\Camera_Vision_{0}_{1}.avi", name, fileName), width, height); aviWriter.FrameRate = 25; aviWriter.Quality = 100; }
public API_AForge_Video newVideo(string pathToVideo) { PathToAviVideo = pathToVideo; VideoWriter = new AVIWriter(VideoCodec); VideoWriter.FrameRate = FrameRate; VideoWriter.Open(PathToAviVideo, VideoWidth, VideoHeight); return(this); }
//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 button3_Click(object sender, EventArgs e) { usbCams = new FilterInfoCollection(FilterCategory.VideoInputDevice); cam = new VideoCaptureDevice(usbCams[0].MonikerString); cam.DesiredFrameSize = new Size(320, 240); writer.Open("test.avi", 320, 240); cam.NewFrame += new NewFrameEventHandler(cam_NewFrame); cam.DesiredFrameRate = 25; cam.Start(); }
public static void WriteAvi(string path, int width, int height, VideoType videoType = VideoType.Default) { avi = new AVIWriter(); if (videoType != VideoType.Default) { avi.Codec = videoType.ToString(); } avi.FrameRate = 10; avi.Open(path, width, height); }
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); }
private void button2_Click(object sender, EventArgs e) { writer = new AVIWriter("DIB "); writer.Open("video.avi", 160, 120); Bitmap image = new Bitmap(160, 120); videoSource = new VideoCaptureDevice(videoDevices[comboBox1.SelectedIndex].MonikerString); videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame); #pragma warning disable CS0612 videoSource.DesiredFrameSize = new Size(160, 120); #pragma warning restore CS0612 videoSource.Start(); }
public void startSave(string fid = "", int max_frames = 1000, int max_size_mb = 1000) // buffer size is only required if compress is true { writeFileName = fileName; if (fid.Length > 0) { writeFileName = fid; } frameCount = 0; if (writeFileName.EndsWith(".avi")) { aviWriter = new AVIWriter("MRLE"); aviWriter.FrameRate = 30; Console.WriteLine("Codec:" + aviWriter.Codec); if (File.Exists(writeFileName)) { File.Delete(writeFileName); // otherwise it will not run } aviWriter.Open(writeFileName, Convert.ToInt32(640), Convert.ToInt32(480)); // always crashes here anyway - something to do with Windows7 I think // found some advice at http://code.google.com/p/aforge/issues/detail?id=312 /* * Type Name Format Binary Version * ICM Microsoft RLE MRLE msrle32.dll 6.1.7600.16490 * ICM Microsoft Video 1 MSVC msvidc32.dll 6.1.7600.16490 * ICM Microsoft YUV UYVY msyuv.dll 6.1.7600.16490 * ICM Intel IYUV codec IYUV iyuv_32.dll 6.1.7600.16490 * ICM Toshiba YUV Codec Y411 tsbyuv.dll 6.1.7600.16490 * ICM Cinepak Codec by Radius cvid iccvid.dll 1.10.0.13 * DMO Mpeg4s Decoder DMO mp4s, MP4S, m4s2, M4S2, MP4V, mp4v, XVID, xvid, DIVX, DX50 mp4sdecd.dll 6.1.7600.16385 * DMO WMV Screen decoder DMO MSS1, MSS2 wmvsdecd.dll 6.1.7600.16385 * DMO WMVideo Decoder DMO WMV1, WMV2, WMV3, WMVA, WVC1, WMVP, WVP2 wmvdecod.dll 6.1.7600.16385 * DMO Mpeg43 Decoder DMO mp43, MP43 mp43decd.dll 6.1.7600.16385 * DMO Mpeg4 Decoder DMO MPG4, mpg4, mp42, MP42 mpg4decd.dll 6.1.7600.16385 * */ } else { toCompress = !writeFileName.EndsWith(".vid"); writePos = 0; maxFrames = max_frames; maxSizeMb = max_size_mb; frameWriter = new BinaryWriter(File.Open(writeFileName, FileMode.Create)); if (toCompress) { writeFramePosList = new List <Int32>(); } saveMode = true; } }
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(); }
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 button5_Click(object sender, EventArgs e) { if (toggleRec == false) { SaveFileDialog saveAVI = new SaveFileDialog(); saveAVI.Filter = "AVI Files (*.avi)|*.avi"; if (saveAVI.ShowDialog() == DialogResult.OK) { writer = new AVIWriter("XVID"); writer.Open(saveAVI.FileName, 480, 640); toggleRec = true; Label lblRec = new Label(); } } }
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; })); }
public AviWriter(String path, int width = 0, int height = 0) { if (width == 0 || height == 0) { path += ".stream"; videoStream = File.Create(path, 1392640); } else { path += ".avi"; videoWriter = new AVIWriter("ffds"); videoWriter.FrameRate = 12; videoWriter.Open(path, width, height); } }
public SaveVideo(Stegonography steg) { stegonography = steg; //Saving into new AVI // create instance of video writer //Uncommented till VideoFileWriter is compressing the data! //writer = new VideoFileWriter(); //writer.Open("test.avi", stegonography.Width + 1, stegonography.Height + 1, stegonography.FPS, VideoCodec.MPEG4); //Empty constructor is creating writer with DIB codec which means no compression writer = new AVIWriter(); writer.FrameRate = steg.FPS; writer.Open("test.avi", steg.Width + 1, steg.Height + 1); }
private void btnVer_Click(object sender, EventArgs e) { //Establecemos el objeto seleccionado como fuente de video fuenteDeVideo = new VideoCaptureDevice(dispositivos[comboCamaras.SelectedIndex].MonikerString); //Iniciamos la cámara fuenteDeVideo.Start(); //Inicializamos el control videoSourcePlayer1.VideoSource = fuenteDeVideo; //Iniciamos recepción de imágenes videoSourcePlayer1.Start(); //Habilitamos el botón para grabar btnParar.Enabled = true; /*Si el usuario marcó que quería destacar el movimiento, creamos un detector * de movimiento con destaque, caso contrario, uno que sólo detecte movimiento sin destacar áreas */ if (resaltarMovimiento) { detectorDeMovimiento = new MotionDetector(new SimpleBackgroundModelingDetector(), new MotionAreaHighlighting()); } else { detectorDeMovimiento = new MotionDetector(new SimpleBackgroundModelingDetector()); } try { if (videoSourcePlayer1.GetCurrentVideoFrame() != null) { int alto = videoSourcePlayer1.Height; int ancho = videoSourcePlayer1.Width; Bitmap image = new Bitmap(ancho, alto); image = videoSourcePlayer1.GetCurrentVideoFrame(); archivo += "/test.avi"; writer.Open(archivo, image.Width, image.Height); estaGrabando = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
void _experiment_NewTrack(object sender, EventArgs e) { AudioFileEventArgs audioTrack = (AudioFileEventArgs)e; try { // create new AVI file and open it //string writerfile = "..\\" + _currentUser + ".avi" //_writer.FrameRate = 17; _writer.Open("..\\" + _currentUser + Path.GetFileName(audioTrack.AudioFile) + ".avi", _videoSource.VideoResolution.FrameSize.Width, _videoSource.VideoResolution.FrameSize.Height); } catch (Exception exp) { MessageBox.Show(exp.Message, Control.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Warning); throw; } string filename1 = "..\\" + _currentUser + Path.GetFileName(audioTrack.AudioFile) + "_Shimmer1.csv"; string filename2 = "..\\" + _currentUser + Path.GetFileName(audioTrack.AudioFile) + "_Shimmer2.csv"; try { _writeToFileShimmer1 = new Logging(filename1, _delimeter); _writeToFileShimmer2 = new Logging(filename2, _delimeter); } catch (Exception ex) { MessageBox.Show(ex.Message, Control.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Warning); throw; } ////ECG-HR Conversion if (_enableECGtoHRConversion) { ECGtoHR = new ECGToHR(ShimmerDevice1.GetSamplingRate(), TrainingPeriodECG, NumberOfHeartBeatsToAverageECG); } ExGLeadOffCounter = 0; ExGLeadOffCounterSize = (int)ShimmerDevice1.GetSamplingRate(); ShimmerIdSetup.Clear(); ShimmerDevice1.StartStreaming(); ShimmerDevice2.StartStreaming(); _writeData = true; }
private void button1_Click(object sender, EventArgs e) { if (this.toggleButton.Text == "Start Rec.") { this.toggleButton.Text = "STOP Rec."; this.toggleButton.BackColor = Color.Black; toggleButton.ForeColor = Color.White; saveVideo = new AVIWriter("wmv3"); saveVideo.FrameRate = 15; saveVideo.Open("video.avi", 640, 480); } else { this.toggleButton.Text = "Start Rec."; toggleButton.ForeColor = Color.Black; toggleButton.BackColor = Color.White; saveVideo.Close(); } }
public Video(String input, String output, int length, String extension, int LSB, String password) { Length = length; Extension = extension; this.LSB = LSB; Password = ToPasswordSeed(password); SumPNSRFrame = 0; SumPNSR = 0; PNSR = 0; reader = new AVIReader(); writer = new AVIWriter(); reader.Open(input); writer.Open(output, reader.Width, reader.Height); ResetWriteByte(); HideHeader(); }
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 Start(int framesPerSecond) { string filename; if (recordingWindow != null) { string windowTitle = Regex.Replace(recordingWindow.Text, @"[^\x20\d\w]", ""); if (string.IsNullOrEmpty(windowTitle)) { windowTitle = "greenshot-recording"; } filename = Path.Combine(conf.OutputFilePath, windowTitle + ".avi"); } else { filename = Path.Combine(conf.OutputFilePath, "greenshot-recording.avi"); } if (File.Exists(filename)) { try { File.Delete(filename); } catch {} } LOG.InfoFormat("Capturing to {0}", filename); if (recordingWindow != null) { LOG.InfoFormat("Starting recording Window '{0}', {1}", recordingWindow.Text, recordingWindow.ClientRectangle); recordingSize = recordingWindow.ClientRectangle.Size; } else { LOG.InfoFormat("Starting recording rectangle {0}", recordingRectangle); recordingSize = recordingRectangle.Size; } if (recordingSize.Width % 8 > 0) { LOG.InfoFormat("Correcting width to be factor 8, {0} => {1}", recordingSize.Width, recordingSize.Width + (8-(recordingSize.Width % 8))); recordingSize = new Size(recordingSize.Width + (8-(recordingSize.Width % 8)), recordingSize.Height); } if (recordingSize.Height % 8 > 0) { LOG.InfoFormat("Correcting Height to be factor 8, {0} => {1}", recordingSize.Height, recordingSize.Height + (8-(recordingSize.Height % 8))); recordingSize = new Size(recordingSize.Width, recordingSize.Height + (8-(recordingSize.Height % 8))); } this.framesPerSecond = framesPerSecond; // "P/Invoke" Solution for capturing the screen hWndDesktop = User32.GetDesktopWindow(); // get te hDC of the target window hDCDesktop = User32.GetWindowDC(hWndDesktop); // Make sure the last error is set to 0 Win32.SetLastError(0); // create a device context we can copy to hDCDest = GDI32.CreateCompatibleDC(hDCDesktop); // Check if the device context is there, if not throw an error with as much info as possible! if (hDCDest == IntPtr.Zero) { // Get Exception before the error is lost Exception exceptionToThrow = CreateCaptureException("CreateCompatibleDC", recordingSize); // Cleanup User32.ReleaseDC(hWndDesktop, hDCDesktop); // throw exception throw exceptionToThrow; } // Create BitmapInfoHeader for CreateDIBSection BitmapInfoHeader bitmapInfoHeader = new BitmapInfoHeader(recordingSize.Width, recordingSize.Height, 32); // Make sure the last error is set to 0 Win32.SetLastError(0); // create a bitmap we can copy it to, using GetDeviceCaps to get the width/height hDIBSection = GDI32.CreateDIBSection(hDCDesktop, ref bitmapInfoHeader, BitmapInfoHeader.DIB_RGB_COLORS, out bits0, IntPtr.Zero, 0); if (hDIBSection == IntPtr.Zero) { // Get Exception before the error is lost Exception exceptionToThrow = CreateCaptureException("CreateDIBSection", recordingSize); exceptionToThrow.Data.Add("hdcDest", hDCDest.ToInt32()); exceptionToThrow.Data.Add("hdcSrc", hDCDesktop.ToInt32()); // clean up GDI32.DeleteDC(hDCDest); User32.ReleaseDC(hWndDesktop, hDCDesktop); // Throw so people can report the problem throw exceptionToThrow; } // Create a GDI Bitmap so we can use GDI and GDI+ operations on the same memory GDIBitmap = new Bitmap(recordingSize.Width, recordingSize.Height, 32, PixelFormat.Format32bppArgb, bits0); // select the bitmap object and store the old handle hOldObject = GDI32.SelectObject(hDCDest, hDIBSection); stop = false; aviWriter = new AVIWriter(); // Comment the following 2 lines to make the user select it's own codec //aviWriter.Codec = "msvc"; //aviWriter.Quality = 99; aviWriter.FrameRate = framesPerSecond; aviWriter.Open(filename, recordingSize.Width, recordingSize.Height); // Start update check in the background backgroundTask = new Thread (new ThreadStart(CaptureFrame)); backgroundTask.IsBackground = true; backgroundTask.Start(); }