Comment Enregistrer de la Vidéo de la WebCam en MPEG ou AVI fichiers à l'aide de C# de l'Application de Bureau

Je développe une Application de Bureau qui m'oblige à se connecter à la webcam(s) et record(enregistrer) la vidéo au format MPEG, AVI, MP4 et WMV formats et de les Graver dans le lecteur de CD/DVD. L'application est en Win Forms. Je suis seulement à la Recherche de libre ou open source solutions ou des contrôles.

J'ai eu fini d'enregistrer au format AVI en utilisant Aforge.Net mais sa prise de plus de taille pour économiser de l'(60-100 mo pour 15sce 320x240 ). Je m'attends à 1 mo pour les 10sec.
Voici le Code :

using System;
using System.Drawing;
using System.Windows.Forms;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Video.VFW;
namespace Aforge_Web_Cam
{
public partial class VideoForm : Form
{
private FilterInfoCollection VideoCaptureDevices;
private VideoCaptureDevice FinalVideo = null;
private VideoCaptureDeviceForm captureDevice;
private Bitmap video;
private AVIWriter AVIwriter = new AVIWriter();
private SaveFileDialog saveAvi;
public VideoForm()
{
InitializeComponent();
}
private void VideoForm_Load(object sender, EventArgs e)
{
VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
captureDevice = new VideoCaptureDeviceForm();
}
private void butStart_Click(object sender, EventArgs e)
{
if (captureDevice.ShowDialog(this) == DialogResult.OK)
{
VideoCaptureDevice videoSource = captureDevice.VideoDevice;
FinalVideo = captureDevice.VideoDevice;
FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
FinalVideo.Start();
}
}
void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
if (butStop.Text == "Stop Record")
{
video = (Bitmap)eventArgs.Frame.Clone();
pbVideo.Image = (Bitmap)eventArgs.Frame.Clone();
AVIwriter.Quality = 0;
AVIwriter.AddFrame(video);
}
else
{
video = (Bitmap)eventArgs.Frame.Clone();
pbVideo.Image = (Bitmap)eventArgs.Frame.Clone();
}
}
private void butRecord_Click(object sender, EventArgs e)
{
saveAvi = new SaveFileDialog();
saveAvi.Filter = "Avi Files (*.avi)|*.avi";
if (saveAvi.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
int h = captureDevice.VideoDevice.VideoResolution.FrameSize.Height;
int w = captureDevice.VideoDevice.VideoResolution.FrameSize.Width;
AVIwriter.Open(saveAvi.FileName, w, h);
butStop.Text = "Stop Record";
//FinalVideo = captureDevice.VideoDevice;
//FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
//FinalVideo.Start();
}
}
private void butStop_Click(object sender, EventArgs e)
{
if (butStop.Text == "Stop Record")
{
butStop.Text = "Stop";
if (FinalVideo == null)
{ return; }
if (FinalVideo.IsRunning)
{
//this.FinalVideo.Stop();
this.AVIwriter.Close();
pbVideo.Image = null;
}
}
else
{
this.FinalVideo.Stop();
this.AVIwriter.Close();
pbVideo.Image = null;
}
}
private void butCapture_Click(object sender, EventArgs e)
{
pbVideo.Image.Save("IMG" + DateTime.Now.ToString("hhmmss") + ".jpg");
}
private void butCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void VideoForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (FinalVideo == null)
{ return; }
if (FinalVideo.IsRunning)
{
this.FinalVideo.Stop();
this.AVIwriter.Close();
}
}
}
}
  • Vous ne pouvez pas simplement "save as AVI", vous avez pour encoder la vidéo au format de votre choix. (AVI est simplement un conteneur, d'ailleurs, pas un format.)
  • si vous savez coder, pls envoyer le code pour encoder la vidéo. merci pour les commentaires
  • Allez, montrez un peu d'effort!
  • je suis en train de les 2 dernières semaines je n'ai pas le bon code pour l'enregistrement vidéo que je vais essayer de plus, mais j'avais besoin d'un peu d'aide.
  • je l'ai fait par VideoFileWriter lien
  • Observation: ne Jamais base les fonctionnalités de votre application avec l'interface d'application -> if (butStop.Texte == "Arrêter L'Enregistrement"). Définir un indicateur pour que

InformationsquelleAutor Pavan Kumar | 2014-05-05