Wenn man selbst keinen Camcorder besitzt und plötzlich die "nette" Aufgabe bekommt das Hochzeits-Video aus dem geliehenen Camcorder doch am besten selbst gleich als digitales Video abzuspeichern, ist man am Anfang etwas irritiert.
Da im Grunde jedes Problem lösbar ist, möchte ich kurz meine Erfahrungen beschreiben und gleichzeitig eine Anleitung geben, wie man einen Camcorder unter Linux ausliest.
Am Anfang war die Schnittstelle ...
Als ich auf einem relativ neuen Sony Camcorder etwas von USB-Schnittstelle las, war ich erleichtert: ich dachte mir, es wäre nicht schwer meinen PC über USB mit dem Camcorder zu koppeln.
Relativ schnell - nach einigem Googlen - wurde klar, dass die USB-Schnittstelle nur dafür gedacht war, Fotos aus dem Camcorder auf den PC zu laden - tja, Camcorder können auch fotografieren ...
Die zweite Schnittstelle auf dem Camcorder hiess iLink. Nach kurzer Recherche war klar, dass Firewire damit gemeint war und dafür braucht man eine PCI-Schnittstellen-Karte (ausser man ist im Besitz eines relativ neuen Motherboards oder nennt einen Sony Vaio Notebook sein eigen).
Relativ praktisch ist auch, dass man den Camcorder über diese Schnittstelle auch fernsteuern kann: vor- und zurückspulen, aufnehmen, das ist alles kein Problem, man kann die Kamera komplett über die PC-Software bedienen.
... dann kam die Karte
Nach ein paar Tagen war auch die Karte geliehen (Hersteller: ST Lab, sah in etwa so aus).
Leider ohne Anleitung, es gab auch keine kleinen Dip-Switches auf der Karte, eigentlich dürfte jetzt nichts mehr schiefgehen.
Nachdem ich die Karte in meinen PII-266 von 1998 eingebaut und Windows 2000 gestartet hatte, wählte ich den entsprechenden Default-Treiber für Firewire aus ("OHCI-1394"). Laut Google sollte man damit fast jede Karte zum Laufen bringen.
Um das Ergebnis vorweg zu nehmen: Fehlanzeige! Selbst unter Linux konnte ich die Karte nicht zum Laufen kriegen. Ich lud die Treiber ieee1394, raw1394 und ohci1394, leider kam bei letzterem immer eine Fehlermeldung.
Stunden später, nach mehreren Versuchen unter Windows und Linux wollte ich aufgeben. Problematisch an der Sache war nur, dass es sich um ein Hochzeits-Video handelte und dieses durfte der Nachwelt nicht vorenthalten werden!!
Ein letzter verzweifelter Versuch brachte die Rettung:
Die "Rettung"
Ich baute die Firewire-Karte in meinen neuen lüfterlosen PC ein (VIA-EPIA 5000 Board), welcher unter Linux läuft. Und siehe da: die Treiber liessen sich alle laden und die Karte war ansprechbar!
Also schnell noch eine zweite Festplatte gekauft (120 GByte, je grösser desto besser), denn eine halbe Stunde Film braucht schlappe 7 GByte für die Rohdaten auf der Platte.
Dummerweise kannte ich kein einziges Programm unter Linux, mit dem man den Camcorder auslesen konnte.
Schnell fand ich heraus, dass es zum editieren von Camcorder-Filmen die Open Source Software kino oder Linux Video Studio gibt.
Da ich mir mein EPIA-Board nicht deshalb gekauft hatte um Videos zu editieren, musste ich mit den beschränkten Hardware-Resourcen (128 MByte RAM, 500 MHz) zurechtkommen.
Deshalb wählte ich als Programm dvgrab. Dieses stellt auch die Basis von "kino" dar und kann über die Kommandozeile - ohne Grafik-Frontend - gestartet werden:
Zum Installieren unter Debian einfach apt-get install dvgrab eingeben und mit
dvgrab --format dv2 --timestamp --size 0 filename beginnt dann das Programm Daten zu schreiben.
Man sollte diesen Aufzeichnungsvorgang nicht stören, sonst bricht er ab.
Leider erfolgte trotzdem ein Abbruch nach 10 Minuten, ziemliche genau an der Stelle, wo das Programm 1GByte Daten geschrieben hatte.
Es half aber ein Update auf eine neuere dvgrab-Version (1.2).
Mit dvgrab --format dv2 --opendml --timestamp --size 0 filename war ich dann am Ziel angelangt und konnte den kompletten Film auszulesen.
Zum Schluss: die Komprimierung
Da man ungern zig Gigabyte an Daten aufhebt, muss der Film nach dem Editieren (darauf habe ich verzichtet) noch komprimiert werden.
Dazu installiert man sich am besten das mjpegtools Paket:
apt-get install mjpegtools und in
/etc/apt/sources.list deb http://debian.tu-bs.de/mplayer unstable main eintragen.
Mit lav2mpeg -a 160 -b 2110 -d 320x240 -m mpeg1 -o output.mpg filename kann die Roh-Avi-Datei in das MPEG1 Format konvertiert werden und braucht dann plötzlich nur noch ca. 80 MByte. Selbstverständlich kann man auch MPEG2 und andere Formate erzeugen.
... und das Abspielen
Wenn man sich das Ergebnis auch ansehen will, hat man die Wahl zwischen:
- xine
- smpeg-gtv
- mplayer
- GMencoder ist ein Gnome Frontend für den mplayer
- vcdimager generiert aus mpeg-Dateien Video-CDs
Am resourcen-schonendsten ist m.E. gtv, der mplayer ist am leistungsfähigsten und kann eine Vielzahl von Formaten erkennen und abspielen.
Fazit
Ok, am Schluss hatte ich schon einige Schweissperlen auf der Stirn, dafür hatte ich mich noch nie vorher mit dem Thema beschäftigt.
Aber es ist schon erstaunlich wie wenig Hardware man braucht um einen Camcorder über die Firewire Schnittstelle auszulesen und welch gute Software es inzwischen für Linux gibt, die stetig weiter entwickelt wird!
Tipp: Das MJPEG-Howto von Bernhard Praschinger hat mir sehr geholfen.