Dvb script gui/dokumentation: Unterschied zwischen den Versionen
Escho (Diskussion | Beiträge) (Neuanlage: Rohfassung) |
(kein Unterschied)
|
Version vom 30. November 2009, 21:56 Uhr
Diese Beschreibung wurde mit folgenden Distributionen getestet: |
OpenSuse 11.0 (32Bit) mit KDE 3.9, KDE 4.1, KDE 4.2 |
Vom DVB zur DVD, die GUI: Anleitungen - Installation - GUI-Kommanderscript - Arbeitsscript - Dokumentation |
Inhaltsverzeichnis
- 1 Die Bedienoberfläche (GUI)
- 2 Arbeitsscript: Überblick
- 3 Arbeitsscript: Vorbereitungen
- 4 Arbeitsscript: Funktionen
- 5 Arbeitsscript: Hauptprogramm
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
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 |