EasyCap Videograbber unter Mac OS X nutzen

Wer einen EasyCap Videograbber (auch das LogiLink VG0001 fällt darunter) besitzt, wird feststellen müssen das die meisten dieser Modelle nicht unter Mac OS X laufen. Das Problem ist, das dass Gerät mangels Treiber nicht erkannt wird und somit auch nicht genutzt werden kann.

Ein LogiLink VG0001 (intern ein EasyCap DC60)

Ein LogiLink VG0001 (intern ein EasyCap DC60)

Mit dem EasyCapViewer gibt es einen entsprechenden Treiber für Mac OS X welcher unter GPL und BSD-Lizenz lizenziert ist. Damit handelt es sich bei dem Treiber um freie Software. Der Download befindet sich auf der offiziellen Seite, der Quellcode auf GitHub. Vor dem Start der Anwendung muss der Videograbber angeschlossen werden. Anschließend kann der EasyCapViewer gestartet werden und mit dem Aufnahmevorgang begonnen werden.

AVI Dateien unter C# schreiben

Wenn man eine AVI Datei unter C# schreiben möchte, wird man feststellen das es zwar viele Wege gibt, aber keiner dieser Wege führt nach Rom. Jede vorgeschlagende Variante hat meist Abhängigkeiten, welche man nicht haben möchte. So wird bei vielen Varianten FFMPEG als DLL genutzt, bei anderen werden Windows DLLs genutzt, was dazu führt das der Quellcode nicht unabhängig von der Plattform ist. Abhilfe schafft hier die freie unter der MIT-Lizenz lizenzierte Bibliothek SharpAvi. Um eine AVI-Datei zu schreiben sind mit Hilfe der Bibliothek nur einige Zeilen Quelltext nötig:

//AviWriter anlegen
AviWriter writer=new AviWriter("test.avi");
writer.FramesPerSecond=25;

//Videostream anlegen
IAviVideoStream stream=writer.AddVideoStream();
stream.Width=1920;
stream.Height=1080;
stream.Codec=KnownFourCCs.Codecs.Uncompressed;
stream.BitsPerPixel=BitsPerPixel.Bpp24;

//Encode für Kompression anlegen
//Ohne Encoder wird die Datei unkomprimiert gepsiechert (stream.WriteFrame)
var encoder=new MotionJpegVideoEncoderWpf(stream.Width, stream.Height, 100);
var encodingStream=new EncodingVideoStreamWrapper(stream, encoder);

//Schwarzen Frame anlegen
byte[] frameData=new byte[stream.Width*stream.Height*3];

//Frames schreiben
for(int i=0;i<25; i++)
{
    encodingStream.WriteFrame(frameData, 0);
}

//Writer schließen
writer.Close();

In diesem Beispiel wird eine AVI Datei mit 25 schwarzen Frames erzeugt, was bei der angegebenen Framerate exakt einer Sekunde entspricht. Zu finden ist SharpAvi auf der offiziellen Webseite. Alternativ kann der Spiegel auf GitHub genutzt werden.