Howto:Videocapturing + DVD Authoring unter Linux per Konsole

Gargi

Ensign
Registriert
Okt. 2004
Beiträge
163
Ist alles keine Hexerei. Doch wer das automatisiert haben möchte, muss sich durch einige Parameter und Scripte arbeiten. Ist das aber erstmal getan, ist der Rest ein Kinderspiel.
Das Ziel: Es soll von einer analogen Fernsehkarte ein Programm auf Festplatte aufgenommen werden. Danach soll automatisiert der Videostream in das mpeg2 Format umgerechnet werden. Eine DVD-Struktur wird erstellt und selbstständig auf eine DVD geschrieben.
Zuerst muss dabei ein Programm gewählt werden, eine Aufnahmezeit in einem Script eingegeben und dann ein DVD-Rohling eingelegt werden.
Normalerweise benötigt man für den ganzen Vorgang keine grafische Benutzeroberfläche, sondern es kann auch vollständig an der Konsole gearbeitet werden.

Was benötigt man?
Eine Linux-Installation. Das xawtv-Paket und die mjpegtools. Zudem eine funktionierende TV-Karte, einen DVD-Brenner und Festplattenplatz. Je mehr, desto gut :) Zudem sollten die Pakete dvdauthor und entsprechende Kompiler-/Entwicklerpakete vorhanden sein.

Mein System:
SuSE Linux 10.0 64bit, Hauppauge WinTV-PVR PCI, Creative Labs Audigy2 ZS, 2GB Ram, Athlon Venice 3500+, NEC 3540A DVD Brenner, als Home-Verzeichnis ist eine 200GB SATA Festplatte von Seagate gemountet.
Mindestanfordrungen auszusprechen ist ziemlich schwer, aber ich denke, mit den Werten kommen wir ganz gut hin und macht denke ich dann Spaß: Prozessor ab 2000MHz, Speicher mindestens 512MB, TV Karte (bttv- Chip bevorzugt), 40GB freier Speicher (mehr ist immer gut und läßt Luft zum Atmen), Brenner und Soundkarte relativ egal, funktionieren müssen die Geräte eben.

Rechtliches: In Zeiten des verschärften Urheberrechtes ist die Frage natürlich berechtigt, ob so ein Tutorial, oder die Aufnahme am PC eigentlich erlaubt ist. Nun, da kann man beruhigt ans Werk gehen, denn am PC einen Film vom Fernseher aufzunehmen ist genausowenig kritisch, als wenn Ihr die Sache am Videorekorder oder Standalone DVD-Rekorder aufnehmt. Am PC habt Ihr nur mehr Möglichkeiten, das Material zu bearbeiten (schneiden, Menüs erstellen etc.). Die Weitergabe (gewerblich oder nicht gewerblich) des aufgenommenen Materials ist hingegen NICHT ERLAUBT. Also das bitte nur zum Privatgebrauch und dem Eigenbedarf machen.

So nun genug geschwafelt, jetzt geht es erstmal ans Werk.

A) Pakete vorbereiten

Da ich mit SuSE Linux arbeite, werde ich diese Anleitung auch entsprechend auf dieses System gemünzt schreiben. Allerdings denke ich kann man das relativ leicht auf andere Distributionen übertragen. Zuerst übersetzen wir nun zwei Pakete neu. Das hat den Grund, dass wir diese Pakete auch sauber auf unser System abgestimmt kompilieren können und damit sicherstellen, dass diese Tools genauso laufen, wie wir es brauchen. Gerade die Software, die sehr nahe mit der Hardware kommuniziert muss auch einwandfrei dessen Sprache sprechen. Hier gibt uns ein Linux-Betriebssystem die Möglichkeiten, alles aus dem Quellcode zu übersetzen, und selbst zu machen. Das hört sich für einen Newbe sicherlich sehr kompliziert an und schreckt erstmal ab. Dennoch ist das Übersetzen eines Programmes eine ganz einfache Sache und hält man sich an den Kompilerdreisatz, dann geht normalerweise nichts schief.
Wir ziehen uns erstmal folgende Pakete:
XAWTV
Hierzu steigt in das Downloadverzeichnis ein:
http://dl.bytesex.org/releases/xawtv/
Dort downloadet Ihr das aktuelle Paket. Zum Zeitpunkt der Erstellung dieses Tutorials ist es das Paket
xawtv-3.95.tar.gz

MJPEGTOOLS
http://sourceforge.net/project/showfiles.php?group_id=5776
Hier zieht Ihr auch das *tar.gz tarball. Die aktuelle Version derzeit ist
v. 1.8.0

Als nächstes sollten folgende Pakete installiert sein, damit entsprechende Headerfiles für den Kompile vorhanden sind:
libmpeg2
libempeg2-devel
libquicktime
libquicktime-devel
Entweder liegen die bereits auf der SUSE-DVD/CD vor, oder Ihr holt Euch diese von
http://packman.links2linux.de/

Wenn Ihr dann alles soweit beieinander habt, dann kopiert Euere Tarballs in ein Arbeitsverzeichnis. Ruft nun die Konsole als normaler User auf und entpackt die Tarballs mit einem
tar -zvxf xawtv-3.95.tar.gz
tar -zvxf mjpegtools-1.8.0.tar.gz

(jeweils der Version angepasst, die Ihr gedownloadet habt)
Den Xawtv übersetzen wir nun, indem wir in dessen Verzeichnis wechseln:
cd xawtv-3.95

Danach legen wir die Konfiguration für das Makefile fest:
./configure
Hier sollte alles sauber durchlaufen. Wenn ein Fehler auftritt deutet es in der Regel auf fehlende Headerfiles hin. I.d.R. steht dabei, welchen Header man benötigt. Dieser muss dann nachinstalliert werden. Diese liegen meistens dann in einem entsprechenden Paket auf der SuSE DVD/CD mit bei.
Danach wird einfach übersetzt:
make
Wenn der Kompilierungsvorgang abgeschlossen ist, dann installiert das Programm locker und lässig mit den Rootrechten:
su
passwort eingeben
make install
Das war schon alles. Genauso verfahrt Ihr dann mit den mjpegtools

B) Verzeichnisse und Scripte

Nun legen wir in unserem Homeverzeichnis ein neues Verzeichnis "DVD" an. Das benötigen wir dann später zum Authoring. Als nächstes kopiert folgende Zeilen in einen Texteditor:

<dvdauthor>
<vmgm />
<titleset>
<titles>
<pgc>
<vob file="movieDVD.mpg" />
</pgc>
</titles>
</titleset>
</dvdauthor>

Dies speichert dann direkt in Euer Homeverzeichnis ab als simple.xml ab. Dieses File ist später als Steuerdatei für die Erstellung einer ganz einfachen DVD-Struktur ohne Menü und Kapitel zuständig. Später werde ich damit auch noch einwenig experimentieren und entsprechende erweiterte Lösungen aufzeigen.

Danach legen wir noch unser Aufnahmescript an. Hierzu kopiert folgende Zeilen in einen Texteditor:

#!/bin/sh

rm -r $HOME/DVD/AUDIO_TS
rm -r $HOME/DVD/VIDEO_TS
streamer -t 0:30 -s 720x576 -r 25 -n pal -o movie.avi -f mjpeg -F stereo -R 48000
lav2yuv +p movie.avi | mpeg2enc -f 3 -4 1 -2 1 -q 6 -b 6000 -P -I 1 -g 6 -G 18 -V 300 -o movie.m2v
lav2wav movie.avi | mp2enc -r 48000 -b 128 -o movie.mpa
mplex -f 8 -V movie.mpa movie.m2v -o movieDVD.mpg
dvdauthor -o DVD -x simple.xml
growisofs -Z /dev/hdc -udf -dvd-video $HOME/DVD/

Dieses speichert Ihr nun direkt im Homeverzeichnis als "dvd.sh" ab. Im KDE klickt nun RECHTS auf diese Datei. Danach auf EIGENSCHAFTEN und dann auf BERECHTIGUNGEN und das Kästchen "AUSFÜHRBAR" anklicken. Das macht das Script dann (richtig erraten!) ausführbar. Mit OK dann übernehmen.

Jetzt müsst Ihr erstmal zwei Werte in dem dvd.sh Script an Euere Konfig anpassen. Die wichtigsten Parameter zur eventuellen Änderung erkläre ich dann später etwas näher.
In der letzten Zeile (beginnend mit growisofs) wird der Brennvorgang gestartet. Dabei wird der Brenner als Device in diesem Beispiel unter /dev/hdc angesprochen. Ändert dies bitte je nachdem Euer Brenner angeschlossen ist ab.
/dev/hda = Primary Master
/dev/hdb = Primary Slave
/dev/hdc = Secondary Master
/dev/hdd = Secondary Slave

Der nächste Wert ist die Aufnahmedauer, die in der Zeile
streamer -t 0:30
gleich als erster Parameter festgelegt ist. 0:30 meint 30 Sekunden Aufnahmedauer. 1:20:30 würde eine Stunde, 20 Minuten und 30 Sekunden bedeuten. Ich denke, das Prinzip ist einleuchtend. Zum Testen empfiehlt sich erstmal die 30 Sekunden zu belassen.

Jetzt seid Ihr eigentlich schon mit den Vorbereitungen durch.

C) Achtung Aufnahme!

Unter SuSE sollte die TV-Karte per YAST eingerichtet sein. Legt dort bitte auch im YAST die Kanalauswahl fest. Die Kanäle können dort gescannt und abgespeichert werden. Das xawtv Program greift auf diese Datenbank zurück. Um den gewünschten Fernsehkanal auszuwählen ruft einfach an der Konsole den xawtv auf:
xawtv
Mit Bild-auf, Bild-ab oder dem Mausrad könnt Ihr das Programm auswählen. Schließt dann das Fenster wieder.
Legt nun einen leeren Rohling in das Brennerlaufwerk ein und führt das Aufnahmescript aus:
./dvd.sh
Wartet nun einfach ab und beobachtet die Ausgabe auf der Konsole. Wenn alles soweit fehlerfrei läuft, sollte der Brenner nach einer Weile loslegen und den Brennvorghang mit dem Beschreiben des Lead-Outs beenden. Danach schaut Euch das Ergebnis mit einem Softwareplayer oder auf Eueren Standalone-Player an.
Was nun passiert ist, ist dass mit einem Startbefehl, von der Fernsehkarte aufgenommen wurde, der Datenstrom in Video und Audiospur zerlegt wurde, beides neu komprimiert, danach als mpeg2 zusammengefügt wurde. Dann erstellt das Script eine einfache DVD-Struktur und brennt diese gleich auf eine DVD. Der Vorgang der Kompression dauert natürlich entsprechen, je nachdem wie lange der Videostream läuft. Hierbei wurde die DVD mit einer variablen Bitrate auf maximal 6000 aufgenommen.

D) Das Script kurz erklärt

Was nun alles ominöses passiert erkläre ich in ein paar Worten. Weiterführendes findet Ihr in dem nachfolgendem Link.

1)
streamer -t 0:30 -s 720x576 -r 25 -n pal -o movie.avi -f mjpeg -F stereo -R 48000

Das Programm streamer kommt aus dem XAWTV Paket. Dieses captured den Videostream von der TV-Karte. Die Parameter:
-t legt die Aufnahmedauer fest
-s Hier steht die Auflösung des Bildes
-r Die Bildwiederholrate (25 für Palaufnahmen)
-n Die TV-Norm (pal)
-o der Name der Aufnahmedatei
-f Kompressionscodec (mjpeg in unserem Fall)
-F die Aufnahmeart des Tons
-R die Rate für den Ton (48000 für DVD- / 44100 für CD-Qualität)

2)
lav2yuv +p movie.avi | mpeg2enc -f 3 -4 1 -2 1 -q 6 -b 6000 -P -I 1 -g 6 -G 18 -V 300 -o movie.m2v

Eine sogenannte Programm-Pipe, da zwei Befehle hintereinander ausgeführt werden. Hierbei wird der Videostream aus dem AVI gezogen und das Bild als *m2v Datei ohne Ton geschrieben und bearbeitet. Hier sind zwei Parameter interessant, da diese die Bildqualität maßgeblich beeinflussen:
-q Ist die Quantisierung bei der variablen Bitrate. Je niedriger, der Wert , desto schärfer das Bild, aber auch höher der Platzbedarf. Alles was kleiner als 7 ist, gibt ein ausgezeichnetes Bild.
-b Maximaler Wert der Bitrate. Ich habe hier die 6000 verwendet

Eine Erweiterung und Verbesserung der Bildqualität wäre durch eine zusätzliche Pipe machbar:

lav2yuv +p movie.avi | yuvcorrect -T PROGRESSIVE | mpeg2enc -f 3 -4 1 -2 1 -q 6 -b 6000 -P -I 0 -g 6 -G 18 -V 300 -o movie.m2v

Das hinzugefügte yuvcorrect -T PROGRESSIVE schreibt die Datei dann in Pal-Progressive, was für Beamerbesitzer interessant sein dürfte. Nur beansprucht dieser Faktar das doppelte an Platz.
Mit diesen Werten darf man ruhig nun einwenig spielen, um den passenden Mittelweg zwischen Bildqualität und Speicherplatz herauszufinden.

3)
lav2wav movie.avi | mp2enc -r 48000 -b 128 -o movie.mpa

Diese Zeile zieht nun den Audistrom aus der avi-Datei und komprimiert das alles in eine mp2 Datei. Parameter:
-r Audiorate. Sollte genauso wie die unterhalb des Befehles streamer gehalten sein
-b Bitrate der mp2. 128 ist ein recht brauchbarer Wert, manche setzen das auch gerne auf 224. Allerdings reicht meines Erachtens die 128 bei TV-Aufnahmen.

4)
mplex -f 8 -V movie.mpa movie.m2v -o movieDVD.mpg

Mischt nun Bild und Ton wieder zusammen (Multiplexen) und schreibt diese als mpg-Datei auf die Platte. Der Parameter -V muss angegeben werden, wenn es sich um eine variable Bitrate handelt!

5)
dvdauthor -o DVD -x simple.xml

Hier wird nun die DVD-Struktur geschrieben. Die Steuerdatei ist dabei die simple.xml. Mögliche Erweiterungen folgen wenn ich einwenig Zeit finde.

6)
growisofs -Z /dev/hdc -udf -dvd-video $HOME/DVD/

Hier wird nun der Inhalt der DVD auf den Rohling geschrieben. Dabei sollte das Device angepasst werdedn (wie oben besprochen). Der Rest sollte unverändert bleiben. Am Schluß steht hier noch das Verzeichnes, in dem die gewünschte DVD hinterlegt ist.


Weitere Parameter und Tipps gibt es in dem sehr guten mjpeg Howto, das als deutschsprachige pdf hier zum Download bereit steht:
http://mjpeg.sourceforge.net/files/mjpeg-howto-de.pdf

Buch zum Thema:
Das Linux Video Buch

Interessante Artikel dazu finden Sich auch in der Zeitschrift Linux User. Viele Artikel sind auch auf deren Seite archiviert:
http://www.linux-user.de


E) Ausblicke

Wenn ich nun weitere Verfeinerungen meines Scriptes habe, bzw. entsprechende Steuerdateien für das Authoring erstellt habe, werde ich diese zur gegebenen Zeit anfügen.


Viel Spaß beim Aufnehmen!
cu
Gargi
 

Ähnliche Themen

Antworten
38
Aufrufe
1.484
Antworten
3
Aufrufe
551
DVD
Antworten
10
Aufrufe
826
Zurück
Oben