Vom DVB zur DVD

Aus Linupedia.org
Wechseln zu: Navigation, Suche

Diese Anleitung erklärt, wie eine DVB-Aufnahme bearbeitet wird, um dann, auf DVD gebrannt, am Stand-alone-Player abspielbar zu sein.


Diese Beschreibung wurde mit folgenden Distributionen getestet:

Opensuse 10.3 32Bit mit KDE 3.5.7


Vorwort

Die neueste Version des Scripts, die auch weiter gepflegt wird, findet sich im letzten Teil dieser Trilogie: Das Script oder vom DVB zur DVD part 3. Ich kann aber nur empfehlen, auch diesen Artikel hier und den zweiten Teil der Trilogie einmal durchzulesen. Man erfährt doch einiges Wissenswertes zum den Themen DVB und DVD. Und man sieht, wie ein Script mit der Erfahrung und der Experimentierfreudigkeit des Autors wachsen kann.

Diese Trilogie ist auch als Einstieg in die Programmierung von Shellscripts gedacht, als Beispiel, was alles mit Hilfe von so einer Kommandozeile angestellt werden kann.

Viel Spass also bei der Lektüre der Texte und beim Experimentieren.


Einleitung

Vor noch nicht allzu langer Zeit  (es war das dunkle Zeitalter der Videorecorder) trug sich in unseren Wohnzimmern oftmals folgendes grauslich
anmutende Geschehen zu:
Eine Stimme ist zu hören, forsch und fordernd: "He Mann, nimm mir doch mal den Gottschalk auf!"
Die Reaktion auf solch drängendes Gebaren: Sofortige Suche nach der Bedienungsanleitung des Videorecorders.
Der Mann, triumphierend das gefundene Buch in der Hand haltend, zweifelnd zwar, aber dennoch, tiefgebückt, es mit stierem Blicke
durchforstend. Er, zögernd die eine oder andere Taste am Gerät drückend, hoffend, daß alles auch so funktioniert, wie es im Hexenbuche beschrieben 
steht.
Freude, die hervorbricht, wenn das Gerät dann zu arbeiten anfängt.
Die Frau, den Mann betrachtend, bewundernd, ob dessen technischen Verständnisses.

--Escho 22:14, 22. Jan. 2008 (CET)

Heute gibt es den einen oder anderen Haushalt, in dem ein Videorecorder nur noch zur Zierde dient, bzw. der Kompatibilität zu einem großen Haufen VHS-Kassetten. Blickfang des Wohnraums ist nun ein Flachbildfernseher geworden, an den ein DVD-Recorder angeschlossen ist. Glücklich, wer solche Gerätschaften sein Eigen nennen darf.

Der normal ausgestattete Mitteleuropäer kann jedoch aufatmen. Denn auch sein Computer, aufgerüstet durch eine Sat-Karte, kann Fernsehsendungen aufnehmen und bearbeiten. Voraussetzung ist nur ein anständiges Betriebssystem und ein paar kleine Helferprogramme:

Notwendige Programme

kaffeine:     Aufnahme und Wiedergabe
libxine1:     Player-Engine, Packman-Version von Xine
projectx:     Schnitt, Synchronisation, Fehlerbereinigung, Demultiplexen
mplex:        Multiplexen, enthalten in den mjpegtools
dvdauthor:    Kommandozeilentool für das Authorn von DVDs
qdvdauthor:   GUI für dvdauthor
k3b:          Brennen
lxdvdrip:     Requantisieren

Die Quelle der Programmpakete sollte Packman sein. Desweiteren sollte vorher getestet werden, ob die Programme auch einzeln funktionieren.

Kurzübersicht

Die gewünschte Fernsehsendung wird mit Kaffeine aufgenommen. Projectx hilft anschließend dabei, die Werbung herauszuschneiden. Das Ergebnis wird demultiplext, also in Bild- und Ton-Dateien zerlegt. Der nächste Schritt ist das Zusammensetzten von Bild und Ton zu einer mpg-Datei, wobei mplex zum Einsatz kommt. Dvdauthor erstellt dann aus dieser Datei die DVD-Struktur. Und diese Struktur wird mit k3b auf einen Datenträger gebrannt.

Die Bearbeitungsschritte können einzeln von Hand ausgeführt werden. Dazu müssen die jeweiligen Programme mit den korrekten Parametern gestartet werden. Dieses Vorgehen ist sogar sehr zu empfehlen, um ein Verständnis dafür zu bekommen, was da eigentlich passiert. Nach dieser Lernphase kann dann dazu übergegangen werden, das Ganze zu automatisieren.

Das im folgenden dargestellte Shellscript stellt einen solchen Automatismus dar.

Vorarbeiten (einmalig)

Es werden einige Arbeitsordner benötigt, die von Nutzer erstellt werden müssen. Es bleibt der Phantasie des Anwenders überlassen, wie diese genannt und wo sie abgespeichert werden. In unserem Script lauten sie so:

Aufnahmeordner:        /daten/videos/aufnahme
Cacheordner:           /daten/videos/bearbeiten/Cache
Zielordner:            /daten/videos/bearbeiten/ZielDVD
Konfigurationsordner:  /daten/videos/Scripte

Diese Arbeitsordner sollten ausschließlich der Arbeit mit dem Script vorbehalten sein! Lediglich der Aufnahmeordner kann frei verwendet werden.

Aufnahme mit kaffeine

Als bevorzugtes Programm für die Aufnahme und Wiedergabe von DVB-s-Streams kommt kaffeine zur Anwendung.

Grundeinstellungen in kaffeine (einmalig)

Aufnahmeordner:        DVB - DVB einrichten - Aufnahme - Aufnahmen-Verzeichnis:    Pfad zum Aufnahmeordner angeben
Aufnahmedauer:         DVB - DVB einrichten - Aufnahme - Sofortaufnahmedauer:      600min (Das reicht auch dann noch, wenn mal länger überzogen wird)
Aufnahmeformat:        DVB - DVB einrichten - Aufnahme - Bevorzugtes Format:       TS (läßt sich prima weiterverarbeiten)

Aufnahmestart

  • Fernsehsender auswählen
  • Sofortaufnahme drücken

Das Shellscript

Mit Hilfe dieses Scrips wird der Vorgang der Videobearbeitung weitgehend automatisiert.

Scriptname

Beliebig (Beispiel: projectx_start.sh). Als Speicherort kann der Konfigurationsordner verwendet werden. Die Endung des Namens sollte .sh lauten.

Scriptstart

Das Shellscript muß ausführbar gemacht werden: Rechtsklick - Eigenschaften - Berechtigungen - Ausführbar

Nun genügt ein Mausklick, um das Script zu starten. Alternativ kann ein Terminal geöffnet werden, in dem der Scriptname eingegeben wird.

Scriptcode

#!/bin/sh

#++++++++++++++++++++++++++++Vom DVB zur DVD+++++++++++++++++++++++++++++++++++++++

#+++++++++++++++++++++++++++++Cache leeren+++++++++++++++++++++++++++++++++++++++++
rm /daten/videos/bearbeiten/Cache/*.*

#++++++++++++++++++++++++++Zielordner leeren+++++++++++++++++++++++++++++++++++++++
rm /daten/videos/bearbeiten/ZielDVD/VIDEO_TS/*
rm /daten/videos/bearbeiten/ZielDVD/AUDIO_TS/*
rmdir /daten/videos/bearbeiten/ZielDVD/VIDEO_TS
rmdir /daten/videos/bearbeiten/ZielDVD/AUDIO_TS

#+++++++++++++++++++++++++Ausführung projectx++++++++++++++++++++++++++++++++++++++
#++++++(Quelle auswählen - Schneiden - Demultiplexen - Ziel festlegen)+++++++++++++
/usr/bin/projectx.sh

#+++++++++++++++++++++++++++++Multiplexen+++++++++++++++++++++++++++++++++++++++++++
/usr/bin/mplex -f8 /daten/videos/bearbeiten/Cache/*.mp2 /daten/videos/bearbeiten/Cache/*.m2v -o /daten/videos/bearbeiten/Cache/clip.mpg

#++++++++++++++++++++++++++Authoring ohne DVD-Menue+++++++++++++++++++++++++++++++++
/usr/bin/dvdauthor -o /daten/videos/bearbeiten/ZielDVD -x /daten/videos/Scripte/dvdauthor.xml

#++++++++++++++++++++++++++++Öffnen Brennprogramm+++++++++++++++++++++++++++++++++++
/opt/kde3/bin/k3b

#+++++++++++++++++++++++++++++++Script Ende+++++++++++++++++++++++++++++++++++++++++
exit 0

Die hier genannten Programmpfade beziehen sich auf die 32Bit-Version von OpenSuse 10.3 mit KDE 3.5.7. Bei anderen Versionen ist das Script entsprechend anzupassen.

Erläuterungen zum Code

*Cache leeren:                    Definierter Anfangszustand.
*Zielordner leeren:               Muß sein, da sonst immer neue Dateien im Zielordner - VIDEO_TS hinzugefügt werden. Das ergibt dann eine nicht 
                                  lesbare DVD.
*Videoschnitt und Demultiplexen:  projectx. Es handelt sich um ein Java-Programm und wird gestartet mit dem Script: projectx.sh
*Multiplexen:                     mplex
*Authoren:                        dvdauthor. Erstellen der DVD-Struktur
*Brennen:                         k3b wird automatisch gestartet. Die Eingaben erfolgen dann von Hand, um überprüfen zu können, was da auf die DVD  
                                  geschaufelt werden soll.

Die Bearbeitungsschritte im Einzelnen

Projectx

Geniales Programm für die Weiterverarbeitung von DVB-Streams. Hier wird es zum Schneiden und Demultiplexen des aufgenommenen TS-Streams verwendet. Beim Demultiplexen werden Bild und Ton zusätzlich noch synchronisiert und es werden kleinere Fehler (Dropouts) behoben.

Grundeinstellungen in projectx (Einmalig)

*Einstellungen - Einstellungen:    beim Beenden speichern                          Einmal vorgenommene Einstellungen bei jedem Programmstart verwenden
*Liste der Ausgabepfade:           Cacheordner angeben                             Einer der Arbeitsordner
*Prozess - anpassen - Aktion:      demultiplex                                     Was soll das Programm machen
*Prozess - anpassen --> Prozessfenster - Datei: Programm nach Ausführung beenden   Damit es im Script weitergehen kann

Quelldatei (vom Anwender einzugeben)

*Datei - Hinzufügen - "Das aus dem Aufnahmeordner, was bearbeitet werden soll"

Schneiden

Es handelt sich hierbei um keinen Frame-genauen Schnitt. Die Genauigkeit ist aber durchaus ausreichend für den Heimanwender. Es wird selten passieren, daß man sieht, wo die Werbung herausgeschnitten wurde. Es muß allerdings auch gesagt werden, daß das Schneiden mit projectx einige Übung voraussetzt. Nicht, weil es sonst nicht funktioniert, sondern damit es flott von der Hand geht!

*Mit dem Laufbalken den ersten Schnittpunkt grob anwählen
*Mit den Vor- Zurückspultasten den genauen Schnittpunkt anfahren
*Nun den Button "+" drücken

Damit ist der erste Schnittpunkt festgelegt und für die weiteren Schnittpunkte kann genauso verfahren werden. Mit dem Button "+" wird jeweils ein neuer Schnittpunkt gesetzt, mit dem Button "-" wird ein Schnittpunkt entfernt. Zur Kontrolle dient letzendlich der Laufbalken: rot, was herausgeschnitten wird, grün, was drin bleibt.

Eine interessante Einführung in die Grundlagen des Schneidens von mpeg-Streams läßt sich [hier] nachlesen.

Bearbeitung starten

*Quickstart drücken

Bearbeitungsergebnis

Es werden zwei Dateien erstellt:

*Bilddatei: Cacheordner/xxx.m2v
*Tondatei: Cacheordner/yyy.mp2

Der Bearbeitungsfortschritt kann am Bildschirm verfolgt werden. Das Programm beendet sich schließlich von selbst, was dazu führt, daß im Script der nächste Schritt ausgeführt wird.

mplex

Hiermit wird die Bild- und die Tondatei wieder zu einem .mpg-Stream zusammengefasst. Dieser Stream hat nun ein Format, welches von einem Authoring-Programm weiter bearbeitet werden kann.

Eingangsdateien

*Bild: Cacheordner/xxx.m2v
*Ton: Cacheoedner/xxx.mp2

Ausgangsdatei

*Cacheordner/clip.mpg

dvdauthor

Dieses Kommandozeilenprogramm erstellt die fertige DVD-Struktur.

Die DVD-Struktur

Damit eine Video-DVD von einem Abspielgerät auch gelesen werden kann, muß sie eine bestimmte Verzeichnisstruktur aufweisen:

*AUDIO_TS: Dieser Ordner ist nur wegen der Kompatibilität zur Audio-DVD vorhanden und leer.
*VIDEO_TS: Hier sind die Bild und Tonsignale gespeichert, dazu einige Verwaltungsdateien.

Das DVD-Menue

Mit dvdauthor läßt sich auch ein DVD-Menue erstellen. Darauf wird hier jedoch verzichtet, was bedeutet, daß der Film sofort startet, wenn die DVD eingelegt wird. Sollte dennoch ein Menue gewünscht werden, so sei auf qdvdauthor als graphische Benutzeroberfläche von dvdauthor verwiesen.

xml-Datei(Einmalig)

Mit folgender Konfigurationsdatei wird dvdauthor eine DVD-Struktur ohne Menue erstellen. Sie erhält den Namen: dvdauthor.xml und wird im Konfigurationsordner gespeichert.

<dvdauthor>
   <vmgm />
   <titleset>
       <titles>
           <pgc>
               <vob file="/daten/videos/bearbeiten/Cache/clip.mpg" />
           </pgc>
       </titles>
   </titleset>
</dvdauthor>

Quelldatei

*Cacheordner/clip.mpg

Zieldateien

*Zielordner/AUDIO_TS
*Zielordner/VIDEO_TS

lxdvdrip

Es ist das Vorrecht einer 4,7GB DVD, daß sie nicht mehr als 4,4GB Platz für das Brennen zur Verfügung stellt. Es gibt aber durchaus Filme, die etwas länger sind und deshalb mehr Speicherplatz benötigen. Hier kommt lxdvdrip ins Spiel. Dieses Programm ript eine fertige DVD-Struktur und und requantisiert diese so, daß sie doch noch auf einer DVD Platz findet. Sollte der Unterschied nicht zu groß sein, ist das ein durchaus annehmbares Mittel. Es lohnt also, einen Blick auf den VIDEO_TS-Ordner in k3b zu werfen. Sollte der zu groß sein, ist lxdvdrip der Kandidat des Tages.

Es wird dann folgender Befehl in ein Terminal eingegeben:

lxdvdrip -dl="/daten/videos/bearbeiten/ZielDVD"

Eventuelle Fragen des Programms sind sinnvoll zu beantworten. Das Ergebnis findet sich dann im Ordner /tmp/film-dvd. Von hier kann der VIDEO_TS-Ordner nach k3b gezogen werden.

k3b

Dieses Programm wird zum Brennen der DVD verwendet. Es wird im Script nur gestartet. Der Rest hat von Hand zu erfolgen.

*Auswählen: Neue Video-DVD
*Aus dem Zielordner den Ordner VIDEO_TS auf "k3b data project" ziehen
*DVD einlegen, so es noch nicht geschehen ist
*Auf Brennen Drücken
*Nach der Fertigstellung k3b beenden

Nachbetrachtung

Dieser doch recht komplexe Vorgang reduziert sich also auf ein paar "Bewegungen" mit der Maus. Alles, was gefordert wird, ist Geduld. Denn die Rechenzeit für einen 2 Stunden-Film kann durchaus 10 bis 20min betragen. Und wenn der Rechner etwas schwächer ist, sind auch längere Zeiten einzukalkulieren. Will man im Groben darüber informiert sein, wie der Bearbeitungsstand ist, so kann das Script in einer Konsole gestartet werden. Ansonsten, grenzenloses Vertrauen vorausgesetzt, genügt ein Klick mit der Maus auf den Scriptnamen.

Vereinfachung

Projectx oder vom DVB zur DVD part 2

Links

packman         http://packman.links2linux.de/
kaffeine	http://kaffeine.kde.org/
xine		http://xinehq.de/
mjpegtools	http://mjpeg.sourceforge.net/
dvdauthor	http://dvdauthor.sourceforge.net/doc/index.html
qdvdauthor	http://qdvdauthor.sourceforge.net/
lxdvdrip	http://developer.berlios.de/projects/lxdvdrip/
k3b		http://www.k3b.org/
schneiden       http://www.radonmaster.de/robernd/tMPEG.html



Zurück zur Multimedia-Übersicht