2008-12-29 7 views
19

Gibt es eine Möglichkeit, den Bildschirm, entweder Desktop oder Fenster, mit .NET-Technologien aufzuzeichnen.Record Video of Screen mit .NET-Technologien

Mein Ziel ist etwas frei. Ich mag die Idee der kleinen, niedrigen CPU-Nutzung, und einfach, würde aber andere Optionen in Erwägung ziehen, wenn sie ein besseres Endprodukt erstellen würden.

Kurz gesagt, ich weiß, wie man einen Screenshot in C#, aber wie würde ich den Bildschirm oder den Bereich des Bildschirms als Video aufnehmen?

Vielen Dank für Ihre Ideen und Zeit!

Antwort

20

Es ist keine DLL von Drittanbietern erforderlich. Diese einfache Methode erfasst das aktuelle Bildschirmbild in einem .NET Bitmap-Objekt.

private Image CaptureScreen() 
    { 
     Rectangle screenSize = Screen.PrimaryScreen.Bounds; 
     Bitmap target = new Bitmap(screenSize.Width,screenSize.Height); 
     using(Graphics g = Graphics.FromImage(target)) 
     { 
      g.CopyFromScreen(0,0,0,0,new Size(screenSize.Width,screenSize.Height)); 
     } 
     return target; 
    } 

Ich bin sicher, dass Sie herausfinden, wie ein kleinen Teil des Bildschirms zu erfassen, wenn das :-) benötigt wird.

+2

Danke, sorry, ich habe nicht klar genug, dass ich Video des Bildschirms aufnehmen möchte. –

+0

Video ist nur viele einzelne Frames zusammen gedrückt, könnten Sie diese Schnappschüsse und erstellen Sie eine AVI aus ihnen ziemlich leicht. –

+1

http://www.adp-gmbh.ch/csharp/avi/write_avi.html –

2

Da ist eine DLL, die es tun kann. Erinnere dich nicht an den Namen, aber es wird von verwendet. Ein Freund von mir hat in nur wenigen Minuten einen Bildschirmschreiber mit dieser DLL implementiert, nur zum Testen. Schauen Sie sich Jing an und Sie werden wahrscheinlich die DLL finden, die sie benutzen.

+0

Ich versuche, um zu überprüfen, das Jing-Projekt. Ich hatte den Eindruck, dass Jing die Aufnahmezeit begrenzt. Vielleicht ist diese Grenze direkt in die DLL eingebaut, von der du sprichst. Auch könnte es nicht unter gpl/lgpl sein, also ist es nicht unbedingt "frei". –

+0

Im Jing-Lizenzvertrag: Trennung von Komponenten - [...] Ihre Komponenten dürfen nicht zur Verwendung getrennt [...] sein. Mein Rat: Seien Sie sicher. versuchen Sie, google nach: C# screen capture –

+0

Nur sicherzustellen, dass jeder versteht das Ziel ist es, Video des Bildschirms aufzunehmen, und nicht eine einfache Bitmap-Bildschirm erfassen. –

3

Sie können Windows Media Encoder SDK verwenden, um eine C# -Anwendung zum Aufzeichnen des Bildschirms zu erstellen. Es gibt eingebaute Optionen, um den gesamten Desktop, ein bestimmtes Fenster oder einen Teil des Bildschirms aufzuzeichnen.

0

Sie können Media Encoder SDK verwenden, aber es wird nicht unter Windows unterstützt 7.

-1

Sie können dieses Open-Source-Dienstprogramm versuchen: ScreenRecord (http://screenrecord.codeplex.com/) es basiert auf AForge.NET

+1

Link nur Antworten sollten als Kommentare veröffentlicht werden. In jedem Fall, wenn sich der Link eines Tages ändert, wird Ihre Antwort ungültig. Erwähnen Sie zumindest den Namen des Dienstprogramms in der Antwort, damit es durchsucht werden kann, selbst wenn die Verbindung ausfällt. – NSNoob