Dvb script gui/dokumentation

Aus Linupedia.org
Version vom 30. November 2009, 21:56 Uhr von Escho (Diskussion | Beiträge) (Neuanlage: Rohfassung)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
Diese Beschreibung wurde mit folgenden Distributionen getestet:

OpenSuse 11.0 (32Bit) mit KDE 3.9, KDE 4.1, KDE 4.2
OpenSuse 11.1 (32Bit) mit KDE 4.3
OpenSuse 11.2 (32Bit) mit KDE 4.3


Vom DVB zur DVD, die GUI: Anleitungen - Installation - GUI-Kommanderscript - Arbeitsscript - Dokumentation



Die Bedienoberfläche (GUI)

Entstehung, Programmierung und Erläuterungen zum GUI-Code habe ich in diesem Wiki-Artikel ausführlich dargestellt. Hier möchte ich nur kurz auf die Kommunikation zwischen GUI und Arbeitsscript eingehen.

Kennziffer

In der GUI wird die gewünschte Aufgabe angekreuzt. Mit dieser Aufgabe ist intern eine Kennziffer verbunden, welche durch das Drücken auf den Go-Knopf für das Arbeitsscript bereitgestellt wird. Das Arbeitsscript übernimmt diese Kennziffer und führt das zur Kennziffer gehörige Programm aus. Die Übernahme erfolgt mit dieser Anweisung:

was_tun=`echo @Self.item(0)`

Anzeigefenster

Um Information über das zu erhalten, was gerade im Programm geschieht, habe ich die Bedienoberfläche mit zwei Anzeigefenstern ausgestattet. Zu diesen Fenstern gehören zwei Textdateien, deren Inhalt von der GUI in kurzen Abständen ausgelesen und in den dazugehörigen Fenstern zur Anzeige gebracht wird. Betriebs- und Fehlermeldungen werden vom Arbeitsscript in diesen Textdateien abgelegt. Hier die Namen dieser Dateien:

$hauptverzeichnis/kommander/debug
$hauptverzeichnis/kommander/fortschritt

Arbeitsscript: Überblick

Das Arbeitsscript ist modular aufgebaut. Es besteht aus einer Anzahl von Funktionsbausteinen, die auch jeweils nur eine bestimmte Teilaufgabe beinhalten. Das Hauptprogramm tut nun nichts anderes, als die jeweils notwendigen Funktionen hintereinander abzurufen. Dieser modulare Aufbau macht es einfach, neue Funktionen zu integrieren, ohne das Script gleich von Grund auf neu programmieren zu müssen.

Ich habe das Script in drei Abschnitte gegliedert:

  • Vorbereitungen: Dieser Initialisierungs-Abschnitt wird jedesmal durchlaufen, wenn in der GUI auf die Go-Taste gedrückt wurde
  • Funktionen: Hier werden die Teilaufgaben als Funktionsbausteine zur Verfügung gestellt
  • Hauptprogramm: Das Hauptprogramm ruft die für die jeweils gestellte Aufgabe notwendigen Funktionsbauteine auf.

Ein wesentlicher Bestandteil des Scriptes sind Variable. Diese Variablen werden im Abschnitt "Vorbereitungen" definiert. So erhält zum Beispiel die Variable "mplex" den Inhalt "/usr/bin/mplex". Wenn das Hilfsprogramm "mplex" von einem Funktionsbaustein benötigt wird, so erfolgt der Aufruf des Programmes auschließlich über diese Variable. Das gleiche gilt für die Arbeitsordner und für weitere notwendige Voreinstellungen

Schauen wir uns das alles nun etwas genauer an

Arbeitsscript: Vorbereitungen

Übernahme von kommander

Die mit der Aufgabe veknüpfte Kennziffer wird in die Variable was_tun geschrieben

Voreinstellungen

Die maximale Brenngeschwindigkeit und die DVD-Größe in Byte werden in Variablen gespeichert.

Die Hilfsprogramme

Die Aufrufbefehle der Hilfsprogramme mit vollständiger Pfadangabe werden in Variablen gespeichert.

Verzeichnisse

Haupt- und Arbeitsverzeichnisse werden festgelegt. Die Pfadangaben zu diesen Verzeichnissen werden in Variablen gespeichert. Ebenso wird eine Variable angelegt, in der der Pfad zu den Videoclips steht.

Überprüfung, ob die Hilfsprogramme installiert sind

In einer var-Schleife wird überprüft, ob die Hilfsprogramme unter den vorhin festgelegten Pfaden tatsächlich existieren. wird ein Programm nicht gefunden, bricht das Script mit einer Fehlermeldung ab.

Anlegen der Verzeichnisstruktur

Falls sie noch nicht existiert, wird die Verzeichnisstruktur, bestehend aus Hauptverzeichnis und den Arbeitsverzeichnissen neu angelegt. Dasselbe geschieht mit dem Verzeichnis für die Videoclips.

Zugriffsdateien für das Debug- und das Fortschrittfenster anlegen

Über diese beiden Textdateien greift die GUI auf Fortschritt- und Fehlermeldungen im Arbeitsscript zu. Die Dateien werden mit dem touch-Befehl angelegt, falls sie noch nicht existent sind.

Fehlermeldungen ins Debug-Fenster umleiten

Die Standard-Fehlerausgabe wird in diese Datei umgeleitet. Die GUI bringt den Inhalt dieser Datei, also die Fehlermeldungen, in ihrem Debug-Fenster zur Anzeige.

Arbeitsscript: Funktionen

Meldungen

fortschrittfenster ()

Der Text, der dieser Funktion übergeben wird, wird in die Datei "fortschritt" geschrieben, die von deer GUI periodisch abgefragt wird. Die Anzeige in der GUI erfolgt im Fortschrittfenster.

fenster_leeren ()

In die Dateien "fortschritt" und "debug" wird ein leerer String geschrieben. Damit wird der Inhalt dieser Dateien gelöscht. Durch die Periodische Abfrage dieser Dateien von der GUI werden dort die Inhalte der entsprechenden Anzeigefenster geleert.

programmende ()

Das Script wird mit dem exit-Befehl beendet. Vorher wird noch gefragt, ob die Anzeigefenster in der GUI geleert werden sollen.

Konfiguration

konfiguration ()

In dieser Funktion wird die x.ini, also die Konfigurationsdatei von projextx erzeugt. Die Bedeutung der Argumente kann in diesem Artikel über die CVS-Version von ProjectX nachgelesen werden.

arbeitsordner_leeren ()

Der Inhalt der temporären Ordner wird gelöscht.

Auswahl Quelldateien

filmauswahl ()

Mit kdialog wird ein KDE-Dialogfenster geöffnet, in dem man die zu bearbeitende Filmdatei auswählen kann.

verzeichnisauswahl ()

Ein schon bearbeiteter und auf Festplatte gesicherter Film kann mit diesem KDE-Dialogfenster geöffnet werden. Dabei wird die Anzahl der benötigten Rohlinge berechnet.

Eingangsverarbeitung

pjx_demux_gui ()

Start von ProjectX zum Demultiplexen der Eingangsdatei

pjx_ts_gui ()

Start von ProjectX, um den Film in ein TS-file zu wandeln

mpeg1_input ()

Demultiplexen eines mpeg1-Films mit ffmpeg

Bearbeitung

requantisieren ()

Requantisieren der m2v-Videodatei, wenn die DVD zu klein für das zu erwartende Ergebnis ist. Der dazu notwendige Requantisierungsfaktor wird aus der vorgegebenen DVD-Größe, der Größe der Audio- und der Größe der Videodateien automatisch berechnet.

normalisieren ()

Die Tondatei wird auf eine definierte Lautstärke gebracht. Dazu wird sie zu einem wav-dile decodiert, normalisiert und abschließend wieder zum mp2-file gewandelt.

ac3_behalten ()

Alle Tondateien außer ac3-Dateien werden gelöscht

mp2_behalten ()

Alle Tondateien außer mp2-Dateien werden gelöscht

Multiplexen, Codieren

multiplexen ()

Authorn

Bild und Tondateien werden zu einem multiplexed. Das Ergebnis ist ein mpeg1-, bzw mpeg2-file

authoring_ohne_menue ()

Das mpeg-file wird geauthored, also in eine für eine Video-DVD verständliche Form gebracht

Brennen

brennen_video_dvd ()

Die DVD-Struktur wird als Video-DVD gebrannt. Ist noch keine DVD eingelegt bzw. ist die DVD nicht verwendbar, so erfolgt ein Hinweis.

brennen_ts ()

Das ts-file wird als Daten-DVD gebrannt. Ist noch keine DVD eingelegt bzw. ist die DVD nicht verwendbar, so erfolgt ein Hinweis. Es werden automatisch soviele DVDs angefordert, wie zum Brennen notwendig sind.

Sichern

sichern_dvd_struktur ()

Die DVD-Struktur wird auf Festplatte gesichert. Der Name des Sicherungsordners setzt sich aus dem aktuellen Datum und der aktuellen Uhrzeit zusammen.

sichern_ts ()

Das ts-file wird auf Festplatte gesichert. Der Name des Sicherungsordners setzt sich aus dem aktuellen Datum und der aktuellen Uhrzeit zusammen.

sichern_clip ()

Der Video-Clip wird auf der Festplatte gespeichert. In einem KDE-Dialogfenster können Speicherort und Dateiname festgelegt werden. Existiert am Speicherort bereits ein Video-Clip mit dem ausgewählten Dateinamen, so erfolgt eine Sicherheitsabfrage, ob überschrieben werden darf.

Arbeitsscript: Hauptprogramm

Im Hauptprogramm werden zuerst die Anzeigefenster geleert. Danach wird die Konfigurationsdatei für ProjectX erzeugt. Anschließend werden die Arbeitsordner geleert.

In der case-Abfrage wird, anhängig von der Kennziffer, die ensprechende Aufgabe abgearbeitet. Dazu werden die notwendigen Funktionen der Reihe nach aufgerufen. Sehen wir das an einem Beispiel an:

Beispiel Video-DVD brennen

Die in der GUI angewählte Aufgabe "Viedo-DVD brennen" ist mit der Kennziffer 11 verknüpft. Damit werden die Programmschritte hinter der 11) ausgeführt:

filmauswahl
pjx_demux_gui
requantisieren
multiplexen
authoring_ohne_menue
brennen_video_dvd
programmende

Und hier die Übersetzung:

Der zu bearbeitende Film wird ausgewählt
ProjectX übernimmt den Film, um ihn zu demultiplexen (Bei der Gelegenheit kann gleich geschnitten werden)
Wenn es notwendig ist, wird das Video-File requantisiert
Bild und ton werden wieder zusammengeführt, also gemultiplext
Die entstandene mpeg2-Datei wird geauthored
Die DVD-Struktur wird als Video-DVD gebrannt
Das Programm wird beendet


Vom DVB zur DVD, die GUI: Anleitungen - Installation - GUI-Kommanderscript - Arbeitsscript - Dokumentation


Zurück zur Multimedia-Übersicht