Projectx oder vom DVB zur DVD part 2
Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist. |
Dies ist der zweite Artikel der Tetralogie "vom DVB zur DVD".
Es wird gezeigt, wie die im ersten Artikel vorgestellte Methode zur Videoverarbeitung weiter vereinfacht werden kann. Dabei wird ProjectX in seiner aktuellen CVS-Version verwendet.
Diese Beschreibung wurde mit folgenden Distributionen getestet: |
Opensuse 11.1 32Bit mit KDE 4.x |
Inhaltsverzeichnis
Vorwort
Dieser Artikel baut auf dem ersten Teil der Tetralogie auf. Es wird als vorausgesetzt, daß dieser erste Wiki-Artikel auch gelesen wurde. Folgende signifikanten Änderungen habe ich vorgenommen:
- ProjectX wird in der CVS-Version verwendet.
- Das Videofile wird nötigenfalls requantisiert
- Das Brennen wird automatisch angestossen
- Es werden auch ac3-Tondateien verarbeitet (Dolby-Sourround)
Welche Programme sind nötig?
- kaffeine: Aufnahme und Wiedergabe (Installation mit Yast, Repository: packman)
- libxine1: Player-Engine, Packman-Version von xine (Installation mit Yast, Repository: packman)
- ProjectX: Schnitt, Synchronisation, Fehlerbereinigung, Demultiplexen (Muss selbst kompiliert werden und zwar so: projectx )
- tcrequant: Requantisieren (Installation mit Yast, Paketname: transcode (ab Version 1.1.5), Repository: packman)
- mplex: Multiplexen (Installation mit Yast, Paketname: mjpegtools, Repository: packman)
- dvdauthor: Kommandozeilentool für das Authorn von DVDs (Installation mit Yast, Repository: packman)
- growisofs: Kommandozeilentool für das Brennen (Installation mit Yast, Paketname: dvd+rw-tools, Repository: packman)
- kdialog: Graphische Dialoge über die Kommandozeile (Installation mit Yast, Repository: OSS)
ProjectX
ProjectX ist ein geniales Programm, um einen DVB-Stream für die Weiterverarbeitung zur Video-DVD vorzubereiten. Die Bedienung ist zwar etwas gewöhnungsbedürftig, was aber hauptsächlich an den vielfältigen Optionen liegen dürfte, die das Programm anbietet. Beläßt man es jedoch bei den Standardeinstellungen, fährt man im allgemeinen gar nicht so schlecht.
Vier Eigenschaften lassen das Tool für den angedachten Verwendungszweck besonders geeignet erscheinen.
Fehlerbereinigung
Kaum eine DVB-Aufnahme wird frei von Fehlern sein. Solche Fehler, wie zum Beispiel Dropouts, werden von ProjectX automatisch beim Demultiplexen so bereinigt, daß sie bei der DVD-Erstellung nicht mehr stören.
Synchronisieren von Audio und Video
Werden die Rohdaten eines DVB-Streams abgespielt, so wird man feststellen, daß ein Zeitversatz zwischen Bild und Ton vorhanden ist. Ein bis zwei Sekunden sind hier keine Seltenheit. Kommen noch Störungen durch Übertragungsfehler dazu, wird darüber hinaus dieser Zeitversatz über den gesamten Film nicht konstant sein. ProjectX beseitigt beim Demultiplexen automatisch den Zeitversatz.
Schneiden des DVB-Streams
Ein DVB-Stream setzt sich prinzipiell aus immer wiederkehrenden Bildergruppen (GOP - group of pictures) unterschiedlichen Inhalts zusammen. Ein solches GOP besteht aus verschiedenen Arten von Frames. Vereinfacht kann man also feststellen:
- Ein I-Frame enthält ein komplettes komprimiertes Bild.
- Ein P-Frame enthält die Änderungen zum I-Frame.
- Ein B-Frame füllt die Lücken.
Damit könnte ein GOP so aussehen: I B B B P B B B P B B B
Es wird ersichtlich, daß ein Schneiden des Streams zeitsparend nur an den I-Frames, also in unserem Beispiel an jedem zwölften Einzelbild möglich ist. Schneidet man am den P- oder B-Frames, ist eine mehr oder weniger aufwändige Neucodierung erforderlich, die in der Regel viel Zeit benötigt.
ProjectX bietet die Möglichkeit, an den I-Frames zu schneiden. Das ist für den Heimanwender zur Beseitigung von Werbung ausreichend genau.
Das Script
#!/bin/bash #++++++++++++++++++++++ProjectX oder vom DVB zur DVD+++++++++++++++++++++++++++++++ #++++++++++++++++++++++++++Ordnerstruktur erzeugen+++++++++++++++++++++++++++++++++ if [ ! -e ~/dvbscript_2 ] then mkdir ~/dvbscript_2 mkdir ~/dvbscript_2/cache mkdir ~/dvbscript_2/ini mkdir ~/dvbscript_2/ergebnis fi #++++++++++++++++++++++++++++++++++++++++X.ini+++++++++++++++++++++++++++++++++++++ echo \ "# Application Application.Agreement=1 Application.Language=de # OptionPanel OptionPanel.NormalLog=0 OptionPanel.closeOnEnd=1" \ > ~/dvbscript_2/ini/X.ini #++++++++++++++++++++++++++Arbeitsordner leeren++++++++++++++++++++++++++++++++++++ rm ~/dvbscript_2/cache/* rm ~/dvbscript_2/ergebnis/VIDEO_TS/* rmdir ~/dvbscript_2/ergebnis/VIDEO_TS rmdir ~/dvbscript_2/ergebnis/AUDIO_TS #++++++++++++++Quelledatei auswählen, schneiden und demultiplexen+++++++++++++++++++ java -jar /usr/share/java/ProjectX.jar -demux -gui -ini ~/dvbscript_2/ini/X.ini -out ~/dvbscript_2/cache -name film #++++++++++++++++++++++++++++++++++Requantisieren+++++++++++++++++++++++++++++++++++ dvdgroesse=4600000000 filmgroesse=`du -bc ~/dvbscript_2/cache/* | cut -f1 | tail -n 1` if [ $filmgroesse -ge $dvdgroesse ] then videogroesse=`du -bc ~/dvbscript_2/cache/*.m2v | cut -f1 | tail -n 1` audiogroesse=`du -bc ~/dvbscript_2/cache/*.ac3 ~/dvbscript_2/cache/*.mp2 | cut -f1 | tail -n 1` requantisierungsfaktor=`echo "scale=8 ; ${videogroesse}/$((dvdgroesse-audiogroesse))*1.04" | bc` /usr/bin/tcrequant -d 2 -i ~/dvbscript_2/cache/film.m2v -o ~/dvbscript_2/cache/film.requant -f ${requantisierungsfaktor} mv ~/dvbscript_2/cache/film.requant ~/dvbscript_2/cache/film.m2v fi #++++++++++++++++++++++++++++++++Multiplexen++++++++++++++++++++++++++++++++++++++++ mpeg2_video= mp2_audio= ac3_audio= mpeg2_video=`find ~/dvbscript_2/cache | grep "m2v"` mp2_audio=`find ~/dvbscript_2/cache | grep "mp2"` ac3_audio=`find ~/dvbscript_2/cache | grep "ac3"` /usr/bin/mplex -v1 -f8 -o ~/dvbscript_2/cache/film.mpg $mpeg2_video $ac3_audio $mp2_audio #+++++++++++++++++++++++++++++++++Authorn++++++++++++++++++++++++++++++++++++++++++++ /usr/bin/dvdauthor -o ~/dvbscript_2/ergebnis -t ~/dvbscript_2/cache/film.mpg /usr/bin/dvdauthor -o ~/dvbscript_2/ergebnis -T #++++++++++++++++++++++++++++++++++Brennen+++++++++++++++++++++++++++++++++++++++++++ /usr/bin/growisofs -speed=8 -dvd-compat -Z /dev/dvd -dvd-video ~/dvbscript_2/ergebnis #+++++++++++++++++++++++++++++++Script Ende++++++++++++++++++++++++++++++++++++++++++ kdialog --msgbox "ende" exit 0
Links
In der Artikelübersicht ist eine ausführliche Linkliste enthalten: vom DVB zur DVD: Vorstellung der Wiki-Artikel in dieser Serie