2013-05-26 7 views
1

Je crée un programme C# qui capture l'écran avec bitmap. Et que je veux l'enregistrer dans un fichier .Avi/.mpeg. Mais je ne sais pas comment l'enregistrer dans une vidéo.Sortie bitmap en C#

Voici le code que j'ai déjà.

public Form1() 
    { 
     InitializeComponent(); 
    } 
    static Bitmap bm; 
    private void btnFolder_Click(object sender, EventArgs e) 
    { 
     FolderBrowserDialog folderDlg = new FolderBrowserDialog(); 
     folderDlg.ShowNewFolderButton = true; 
     DialogResult result = folderDlg.ShowDialog(); 
     if (result == DialogResult.OK) 
     { 
      textBox1.Text = folderDlg.SelectedPath; 
      Environment.SpecialFolder root = folderDlg.RootFolder; 
     } 
    } 

    private void btnStart_Click(object sender, EventArgs e) 
    { 
     timer1.Start(); 
    } 

    private void btnStop_Click(object sender, EventArgs e) 
    { 
     timer1.Stop(); 
     SaveCapture(textBox1.Text); 
    } 
    private void SaveCapture(string path) 
    { 
     // Here should be the code to save it to mpeg/avi 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     // Take screenshot 
     bm = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 
     Graphics graphics = Graphics.FromImage(bm as Image); 
     graphics.CopyFromScreen(0, 0, 0, 0, bm.Size); 
     pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 

     // Show it in picturebox 
     pictureBox1.Image = bm; 
    } 

Merci beaucoup!

+1

cela pourrait aider: http://stackoverflow.com/questions/5978632/bitmaps-to-avi-file-c-sharp-net –

+0

Merci pour cette réponse rapide et utile –

Répondre

1

Create a Video Stream (AVI) from a Series of Images

Je pense que cela pourrait être votre meilleure solution. Stockez tous les fichiers .jpg et créez un fichier avi à partir de la ligne de commande à intervalles réguliers. Je ne vois pas comment créer une vidéo à la volée produirait une solution "légère".

1

Bonjour click this pour télécharger la liasse aviwrapper. Et le code que vous devez écrire est la suivante:

var pngFileList = Directory.EnumerateFiles(folderImages, "*.png"); 
//load the first image 
Bitmap bitmap = (Bitmap)Image.FromFile(pngFileList.First()); 
//create a new AVI file 
AviManager aviManager = new AviManager(fileName, false); // location and the name of video file 

//add a new video stream and one frame to the new file 
//set IsCompressed = false 
VideoStream aviStream = aviManager.AddVideoStream(false, 3, bitmap); 

pngFileList.Skip(1).ToList().ForEach(file => 
{ 
    bitmap = (Bitmap)Bitmap.FromFile(file); 
    aviStream.AddFrame(bitmap); 
    bitmap.Dispose(); 
}); 

aviManager.Close();