Dvb script gui/anleitung: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (Link hinzugefügt)
(Formatierung + Link + Navibox)
Zeile 6: Zeile 6:
 
{{dvb_script_gui_navibox}}
 
{{dvb_script_gui_navibox}}
  
==<font color="green"> Was macht dieses Programm </font>==
+
==<font color="maroon"> Was macht dieses Programm </font>==
  
 
Hauptzweck des Programmes ist es, aufgenommene DVB-Filme so zu bearbearbeiten, daß sie ohne störende Werbung auf DVD gebrannt werden können. Diese Video-DVD ist dann auch in einem Stand-alone Player abspielbar.
 
Hauptzweck des Programmes ist es, aufgenommene DVB-Filme so zu bearbearbeiten, daß sie ohne störende Werbung auf DVD gebrannt werden können. Diese Video-DVD ist dann auch in einem Stand-alone Player abspielbar.
  
==<font color="green"> Weitere Features </font>==
+
==<font color="maroon"> Weitere Features </font>==
  
 
*Aufnahmen brennen bzw. sichern als Daten-DVD (Die ist dann nicht in einem Stand-alone-Player abspielbar).
 
*Aufnahmen brennen bzw. sichern als Daten-DVD (Die ist dann nicht in einem Stand-alone-Player abspielbar).
Zeile 22: Zeile 22:
 
*Schneiden der Aufnahme (nicht bei mpeg1)
 
*Schneiden der Aufnahme (nicht bei mpeg1)
  
==<font color="green"> Der tiefere Sinn des Ganzen </font>==
+
==<font color="maroon"> Der tiefere Sinn des Ganzen </font>==
  
 
An Hand dieses Programmes soll gezeigt werden, wie mit einem Bash-Script die Verarbeitung einer DVB-Aufnahme zu einer Video-DVD automatisiert werden kann. Und um alles noch ein bißchen interessanter zu machen, ist eine Bedienoberfläche (GUI) hinzugekommen, mit der sich das Script mühelos bedienen läßt.
 
An Hand dieses Programmes soll gezeigt werden, wie mit einem Bash-Script die Verarbeitung einer DVB-Aufnahme zu einer Video-DVD automatisiert werden kann. Und um alles noch ein bißchen interessanter zu machen, ist eine Bedienoberfläche (GUI) hinzugekommen, mit der sich das Script mühelos bedienen läßt.
 
Der dornenreiche Weg zu dieser GUI, die mit Kommander erstellt wurde, wird in einem [[Kommander|seperaten Artikel]] behandelt.
 
Der dornenreiche Weg zu dieser GUI, die mit Kommander erstellt wurde, wird in einem [[Kommander|seperaten Artikel]] behandelt.
  
==<font color="green"> Gliederung des Programmes </font>==
+
==<font color="maroon"> Gliederung des Programmes </font>==
  
 
Das Programm setzt sich aus drei Teilen zusammen, die nur gemeinsam funktionsfähig sind:
 
Das Programm setzt sich aus drei Teilen zusammen, die nur gemeinsam funktionsfähig sind:
  
*'''Installations-Script:''' Dieses Bash-Script dient, wie der Name schon sagt, der Installation des Ganzen.
+
*''Installations-Script:'' Dieses Bash-Script dient, wie der Name schon sagt, der Installation des Ganzen.
*'''Kommander-Script:''' Programmcode der GUI.
+
*''Kommander-Script:'' Programmcode der GUI.
*'''Arbeits-Script:''' Bash-Script, mit dem die eigentliche Arbeit verrichtet wird.
+
*''Arbeits-Script:'' Bash-Script, mit dem die eigentliche Arbeit verrichtet wird.
  
==<font color="green"> Kurzanleitung </font>==
+
==<font color="maroon"> Kurzanleitung </font>==
  
===<font color="olive"> Hilfsprogramme </font>===
+
=== Hilfsprogramme ===
  
 
Es müssen folgende Programme installiert sein:
 
Es müssen folgende Programme installiert sein:
Zeile 60: Zeile 60:
 
Beide Programme gehören zur Standardausstattung von OpenSuse 11.0 (mit KDE) und können mit Yast installiert werden.
 
Beide Programme gehören zur Standardausstattung von OpenSuse 11.0 (mit KDE) und können mit Yast installiert werden.
  
===<font color="olive"> Installation </font>===
+
=== Installation ===
  
 
*Leere Textdatei erzeugen, irgendwo im Heimatverzeichnis
 
*Leere Textdatei erzeugen, irgendwo im Heimatverzeichnis
Zeile 71: Zeile 71:
 
*Das Ende der Installation mit OK bestätigen.
 
*Das Ende der Installation mit OK bestätigen.
  
===<font color="olive"> Kopieren der Programm-Codes </font>===
+
=== Kopieren der Programm-Codes ===
  
'''Kommander-Code'''
+
====<font color="gray"> Kommander-Code </font>====
 
*Den [[dvb script gui/guicode|guicode]] aus dem Wiki in folgende Textdatei kopieren: ''~/DVB_Script/GUI/guicode.kmdr''
 
*Den [[dvb script gui/guicode|guicode]] aus dem Wiki in folgende Textdatei kopieren: ''~/DVB_Script/GUI/guicode.kmdr''
 
*Die Textdatei ausführbar machen.
 
*Die Textdatei ausführbar machen.
  
'''Bashscript-Code'''
+
====<font color="gray"> Bashscript-Code </font>====
 
*Den [[dvb script gui/scriptcode|scriptcode]] aus dem Wiki in folgende Textdatei kopieren: ''~/DVB_Script/Script/scriptcode.sh''
 
*Den [[dvb script gui/scriptcode|scriptcode]] aus dem Wiki in folgende Textdatei kopieren: ''~/DVB_Script/Script/scriptcode.sh''
 
*Die Textdatei ausführbar machen.
 
*Die Textdatei ausführbar machen.
Zeile 83: Zeile 83:
 
(''~/DVB_Script'' abändern, wenn während der Installation ein anderes Hauptverzeichnis gewählt wurde)  
 
(''~/DVB_Script'' abändern, wenn während der Installation ein anderes Hauptverzeichnis gewählt wurde)  
  
===<font color="olive"> Start </font>===
+
=== Start ===
  
 
Das Programm kann auf mehrere Arten gestartet werden. Hier eine Auswahl:
 
Das Programm kann auf mehrere Arten gestartet werden. Hier eine Auswahl:
Zeile 91: Zeile 91:
 
*Linksklick auf die gerade erwähnte kmdr-Datei. Es öffnet sich das Editor-Fenster von Kommander. Hier auf Exec drücken.
 
*Linksklick auf die gerade erwähnte kmdr-Datei. Es öffnet sich das Editor-Fenster von Kommander. Hier auf Exec drücken.
  
===<font color="olive"> Bedienung des Programms </font>===
+
=== Bedienung des Programms ===
  
 
*Starten des Programms
 
*Starten des Programms
Zeile 105: Zeile 105:
 
Es ist zu beachten, daß die Bearbeitung eines längeren Filmes auch länger dauern kann. Das Tool mplex hat leider die Angewochnheit, keine Fortschrittanzeige zu produzieren. Man darf aber von folgenden Zeiten ausgehen: Das Multiplexen wird ebenso lange dauern wie das Demultiplexen mit ProjectX. Und das können schon einmal 5 bis 10 Minuten sein (in Abhängigkeit von Rechner und Filmgrösse). Also, nicht die Geduld verlieren!
 
Es ist zu beachten, daß die Bearbeitung eines längeren Filmes auch länger dauern kann. Das Tool mplex hat leider die Angewochnheit, keine Fortschrittanzeige zu produzieren. Man darf aber von folgenden Zeiten ausgehen: Das Multiplexen wird ebenso lange dauern wie das Demultiplexen mit ProjectX. Und das können schon einmal 5 bis 10 Minuten sein (in Abhängigkeit von Rechner und Filmgrösse). Also, nicht die Geduld verlieren!
  
==<font color="green"> Die Details: Das Installations-Script </font>==
+
==<font color="maroon"> Die Details: Das Installations-Script </font>==
  
===<font color="olive"> Hauptprogramm </font>===
+
=== Hauptprogramm ===
  
 
Hier werden die einzelnen Funktionen des Scriptes nacheinander aufgerufen und ausgeführt. Erst wenn eine Funktion abgearbeitet ist, wird die nächste aufgerufen. Das Hauptprogramm befindet sich am Ende des Scriptes. Das ist notwendig, da beim Scriptstart erst alle Funktionen geladen werden müssen, um verwendet werden zu können.
 
Hier werden die einzelnen Funktionen des Scriptes nacheinander aufgerufen und ausgeführt. Erst wenn eine Funktion abgearbeitet ist, wird die nächste aufgerufen. Das Hauptprogramm befindet sich am Ende des Scriptes. Das ist notwendig, da beim Scriptstart erst alle Funktionen geladen werden müssen, um verwendet werden zu können.
Zeile 122: Zeile 122:
 
*hinweis
 
*hinweis
  
===<font color="olive"> Funktionen </font>===
+
=== Funktionen ===
  
 
Schauen wir nun, was in den Funktionen geschieht:
 
Schauen wir nun, was in den Funktionen geschieht:
  
'''defaultwerte_laden ()'''
+
====<font color="gray"> defaultwerte_laden () </font>====
  
 
Viele User werden ihre Aufnahmen, Videoclips und OpenOffice-Dateien an Orten abspeichern, die ihnen sinnvoll erscheinen. Hier kann der Nutzer diese Pfade eingegen. Ändert er nichts, werden Default-Einstellungen verwendet:
 
Viele User werden ihre Aufnahmen, Videoclips und OpenOffice-Dateien an Orten abspeichern, die ihnen sinnvoll erscheinen. Hier kann der Nutzer diese Pfade eingegen. Ändert er nichts, werden Default-Einstellungen verwendet:
Zeile 133: Zeile 133:
 
*''clipordner:'' Hier werden die fertigen Videoclips gepeichert
 
*''clipordner:'' Hier werden die fertigen Videoclips gepeichert
  
'''verzeichnisstruktur_inifiles ()'''
+
====<font color="gray"> verzeichnisstruktur_inifiles () </font>====
  
 
Um die Kommunikation zwischen Arbeitsscript und GUI zu gewährleisten, müssen einige Dateien an fest definierten Orten stehen. Hierzu wird das Verzeichnis ''~/.dvb_script_gui.ini'' erstellt, das einige Unterverzeichnisse besitzt:
 
Um die Kommunikation zwischen Arbeitsscript und GUI zu gewährleisten, müssen einige Dateien an fest definierten Orten stehen. Hierzu wird das Verzeichnis ''~/.dvb_script_gui.ini'' erstellt, das einige Unterverzeichnisse besitzt:
Zeile 144: Zeile 144:
 
*''hilfsprogramme:'' Hier sind die Pfade zu den Hilfsprogrammen enthalten, die nachher noch abgefragt werden
 
*''hilfsprogramme:'' Hier sind die Pfade zu den Hilfsprogrammen enthalten, die nachher noch abgefragt werden
  
'''hauptverzeichnis_festlegen ()'''
+
====<font color="gray"> hauptverzeichnis_festlegen () </font>====
  
 
In dieser Funktion wird der Pfad zum und der Name des Hauptverzeichnisses abgefragt und angelegt. Die prinzipielle Wirkungsweise dieser Funktion kann hier nachgelesen werden: [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Programmieranleitung#basisverzeichnis_festlegen_.28.29 Basisverzeichnis_festlegen]
 
In dieser Funktion wird der Pfad zum und der Name des Hauptverzeichnisses abgefragt und angelegt. Die prinzipielle Wirkungsweise dieser Funktion kann hier nachgelesen werden: [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Programmieranleitung#basisverzeichnis_festlegen_.28.29 Basisverzeichnis_festlegen]
  
'''verzeichnisstruktur_hauptfiles ()'''
+
====<font color="gray"> verzeichnisstruktur_hauptfiles () </font>====
  
 
Die vom Programm benötigte Verzeichnisstruktur wird nun erzeugt. Hier die Erläuterung zu einigen der Verzeichnisse:
 
Die vom Programm benötigte Verzeichnisstruktur wird nun erzeugt. Hier die Erläuterung zu einigen der Verzeichnisse:
Zeile 160: Zeile 160:
 
So noch nicht vorhanden, werden noch die Verzeichnisse für Aufnahhme, Videoclips und Druckschablonen angelegt.
 
So noch nicht vorhanden, werden noch die Verzeichnisse für Aufnahhme, Videoclips und Druckschablonen angelegt.
  
'''ini_file_pjx ()'''
+
====<font color="gray"> ini_file_pjx () </font>====
  
 
Die Initialisierungsdatei für ProjectX ist hier erklärt: [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Programmieranleitung#X.ini_f.C3.BCr_Filmbearbeitung X.ini]
 
Die Initialisierungsdatei für ProjectX ist hier erklärt: [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Programmieranleitung#X.ini_f.C3.BCr_Filmbearbeitung X.ini]
  
'''hilfsprogramme_abfragen ()'''
+
====<font color="gray"> hilfsprogramme_abfragen () </font>====
  
 
Die prinzipielle Wirkungsweise dieser Funktion kann hier nachgeschlagen werden: [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Programmieranleitung#programmerkennung_.28.29 Programmerkennung]
 
Die prinzipielle Wirkungsweise dieser Funktion kann hier nachgeschlagen werden: [http://wiki.linux-club.de/opensuse/Dvb_wiki_script/Programmieranleitung#programmerkennung_.28.29 Programmerkennung]
  
'''desktop_datei_anlegen ()'''
+
====<font color="gray"> desktop_datei_anlegen () </font>====
  
 
Eine Desktop-Datei ist eine Startdatei für ein Programm. Sie kann in KDE einfach erstellt werden, in dem man mit der rechten Maustaste auf die Arbeitsfläche klickt und im Kontextmenue dann auswählt: < Neu erstellen - Verknüpfen mit Programm > Dann einfach alles Notwendige ausfüllen.
 
Eine Desktop-Datei ist eine Startdatei für ein Programm. Sie kann in KDE einfach erstellt werden, in dem man mit der rechten Maustaste auf die Arbeitsfläche klickt und im Kontextmenue dann auswählt: < Neu erstellen - Verknüpfen mit Programm > Dann einfach alles Notwendige ausfüllen.
Zeile 182: Zeile 182:
 
Nach erfolgreicher Installation kann das Programm durch Linksklick auf diese Datei gestartet werden.
 
Nach erfolgreicher Installation kann das Programm durch Linksklick auf diese Datei gestartet werden.
  
==<font color="green"> Die Details: Der Guicode </font>==
+
==<font color="maroon"> Die Details: Der Guicode </font>==
  
 
In der Datei ''${hauptverzeichnis}/gui/guicode.kmdr'' findet man den für die Bedienoberfläche verantwortlichen Programmcode. Dabei handelt es sich eigentlich um ein XML-File, dessen Struktur mit einem Texteditor (kate) angesehen werden kann.
 
In der Datei ''${hauptverzeichnis}/gui/guicode.kmdr'' findet man den für die Bedienoberfläche verantwortlichen Programmcode. Dabei handelt es sich eigentlich um ein XML-File, dessen Struktur mit einem Texteditor (kate) angesehen werden kann.
Zeile 191: Zeile 191:
 
*''kmdr-editor ${hauptverzeichnis}/gui/guicode.kmdr'' Die Bedienoberfläche öffnet im Editor-Modus und kann verändert (umprogrammiert) werden
 
*''kmdr-editor ${hauptverzeichnis}/gui/guicode.kmdr'' Die Bedienoberfläche öffnet im Editor-Modus und kann verändert (umprogrammiert) werden
  
In einem seperaten Artikel (ist noch am entstehen) wird gezeigt, wie mit Hilfe eines kmdr-Kommander-Programmes eine GUI für ein Shellscript erstellt werden kann. Die Benutzeroberfläche für das DVB-Script wird dann als Beispiel dienen und ausführlich erklärt werden.
+
In einem [[Kommander|seperaten Artikel]] wird gezeigt, wie mit Hilfe eines kmdr-Kommander-Programmes eine GUI für ein Shellscript erstellt werden kann. Die Benutzeroberfläche für das DVB-Script wird dann als Beispiel dienen und ausführlich erklärt werden.
  
Wenn ich diesen Artikel hochgeladen habe, stelle ich hier einen Link ein.
+
==<font color="maroon"> Die Details: Der Scriptcode </font>==
 
 
==<font color="green"> Die Details: Der Scriptcode </font>==
 
  
 
Bei diesem Bashscript handelt es sich um eine angepasste Version des [[dvb wiki script/Script|DVB-Wiki-Scriptes]]. Die Funktionsweise des Scriptes kann im [[dvb wiki script|Wikibuch]] nachgelesen werden werden. Einige Änderungen waren notwendig, um das Script zur Zusammenarbeit mit der GUI zu bewegen. Diese Änderungen werden hier kurz beschrieben:
 
Bei diesem Bashscript handelt es sich um eine angepasste Version des [[dvb wiki script/Script|DVB-Wiki-Scriptes]]. Die Funktionsweise des Scriptes kann im [[dvb wiki script|Wikibuch]] nachgelesen werden werden. Einige Änderungen waren notwendig, um das Script zur Zusammenarbeit mit der GUI zu bewegen. Diese Änderungen werden hier kurz beschrieben:
  
===<font color="olive"> Start der gewünschten Aufgaben </font>===
+
=== Start der gewünschten Aufgabe ===
  
 
Das Script aus dem Wiki-Buch war ein einziges großes Script, das alles enthielt: Installation, Auswahl der Aufgaben, Ausführung der Aufgaben.
 
Das Script aus dem Wiki-Buch war ein einziges großes Script, das alles enthielt: Installation, Auswahl der Aufgaben, Ausführung der Aufgaben.
Zeile 209: Zeile 207:
 
Altbekannt und problemlos also!
 
Altbekannt und problemlos also!
  
===<font color="olive"> Texte zur Information des Benutzers </font>===
+
=== Texte zur Information des Benutzers ===
  
 
Um den User immer auf dem Laufenden zu halten, wie weit die Bearbeitung schon fortgeschritten ist, ist es notwendig, das Wiki-Buch-Script in einer Konsole zu starten. Das Konsolenfenster dient dann als Fortschrittfenster. Ein und Ausgaben erfolgen mit kdialog.
 
Um den User immer auf dem Laufenden zu halten, wie weit die Bearbeitung schon fortgeschritten ist, ist es notwendig, das Wiki-Buch-Script in einer Konsole zu starten. Das Konsolenfenster dient dann als Fortschrittfenster. Ein und Ausgaben erfolgen mit kdialog.
Zeile 215: Zeile 213:
 
Im neuen Script wurde die Verwendung von kdialog für Ein- und Ausgaben beibehalten. Die Fortschrittanzeige dagegen wurde an die GUI übergeben.Und das funktioniert so:
 
Im neuen Script wurde die Verwendung von kdialog für Ein- und Ausgaben beibehalten. Die Fortschrittanzeige dagegen wurde an die GUI übergeben.Und das funktioniert so:
  
'''Das Fortschrittfenster'''
+
====<font color="gray"> Das Fortschrittfenster </font>====
  
 
Der Inhalt der Datei ''~/.dvb_script_gui.ini/fortschrittfenster'' wird in der GUI periodisch abgefragt und dann in einem Fenster zur Anzeige gebracht. Diese Datei wird vom Arbeitsscript mit Text gefüllt:
 
Der Inhalt der Datei ''~/.dvb_script_gui.ini/fortschrittfenster'' wird in der GUI periodisch abgefragt und dann in einem Fenster zur Anzeige gebracht. Diese Datei wird vom Arbeitsscript mit Text gefüllt:
  
'''Die Scriptfunktion fenster1 ()'''
+
====<font color="gray">Die Scriptfunktion fenster1 () </font>====
  
 
<pre>
 
<pre>
Zeile 230: Zeile 228:
 
Die Datei ''~/.dvb_script_gui.ini/fortschrittfenster'' wird mit dem Text gefüllt, welcher beim Aufruf der Funktion übergeben wird. Der alte Inhalt der Datei wird dabei gnadenlos und ohne Rückfrage überschrieben.
 
Die Datei ''~/.dvb_script_gui.ini/fortschrittfenster'' wird mit dem Text gefüllt, welcher beim Aufruf der Funktion übergeben wird. Der alte Inhalt der Datei wird dabei gnadenlos und ohne Rückfrage überschrieben.
  
'''Die Scriptfunktion fenster1_mehr ()'''
+
====<font color="gray"> Die Scriptfunktion fenster1_mehr () </font>====
  
 
<pre>
 
<pre>
Zeile 241: Zeile 239:
 
Der an diese Funktion übergebene Text wird an den schon in der Datei ''~/.dvb_script_gui.ini/fortschrittfenster'' vorhandenen Text angehängt. So kann ein wunderschönes Fortschrittslog erzeugt werden.
 
Der an diese Funktion übergebene Text wird an den schon in der Datei ''~/.dvb_script_gui.ini/fortschrittfenster'' vorhandenen Text angehängt. So kann ein wunderschönes Fortschrittslog erzeugt werden.
  
'''Die Scriptfunktion programmende ()'''
+
====<font color="gray"> Die Scriptfunktion programmende () </font>====
  
 
<pre>
 
<pre>
Zeile 262: Zeile 260:
 
Alles klar?
 
Alles klar?
  
'''Das Debugfenster'''
+
====<font color="gray"> Das Debugfenster </font>====
  
 
Ein zweites Textfenster ist in der GUI vorhanden, das ebenso funktioniert wie das Fortschrittfenster. Dazu wird die Datei ''~/.dvb_script_gui.ini/debugfenster'' von der GUI periodisch abgefragt und der Inhalt dieser Datei im Debugfenster zur Anzeige gebracht.
 
Ein zweites Textfenster ist in der GUI vorhanden, das ebenso funktioniert wie das Fortschrittfenster. Dazu wird die Datei ''~/.dvb_script_gui.ini/debugfenster'' von der GUI periodisch abgefragt und der Inhalt dieser Datei im Debugfenster zur Anzeige gebracht.
Zeile 272: Zeile 270:
 
  exec 2> ~/.dvb_script_gui.ini/debugfenster
 
  exec 2> ~/.dvb_script_gui.ini/debugfenster
  
===<font color="olive"> Playlist für mplayer </font>===
+
=== Playlist für mplayer ===
  
'''Playlist erzeugen'''
+
====<font color="gray"> Playlist erzeugen </font>====
  
 
<pre>
 
<pre>
Zeile 289: Zeile 287:
 
Diese Aktualisierung wird jedesmal ausgeführt, wenn im Programm eine neue Aufgabe gestartet wird.
 
Diese Aktualisierung wird jedesmal ausgeführt, wenn im Programm eine neue Aufgabe gestartet wird.
  
'''Playlist abspielen'''
+
====<font color="gray"> Playlist abspielen </font>====
  
 
Die Wiedergabeliste kann mit folgendem Befehl abgespielt werden:
 
Die Wiedergabeliste kann mit folgendem Befehl abgespielt werden:
Zeile 305: Zeile 303:
 
*''-fixed-vo:'' Alle Clips werden in einem einzigen Fenster abgespielt.
 
*''-fixed-vo:'' Alle Clips werden in einem einzigen Fenster abgespielt.
  
 +
{{dvb_script_gui_navibox}}
 
[[Multimedia|Zurück zur Multimedia-Übersicht]]
 
[[Multimedia|Zurück zur Multimedia-Übersicht]]
 
[[Category:Multimedia]]
 
[[Category:Multimedia]]

Version vom 18. November 2008, 22:55 Uhr

Diese Beschreibung wurde mit folgenden Distributionen getestet:

OpenSuse 11.0 (32Bit) mit KDE 3.9.x
OpenSuse 11.0 (32Bit) mit KDE 4.1


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



Was macht dieses Programm

Hauptzweck des Programmes ist es, aufgenommene DVB-Filme so zu bearbearbeiten, daß sie ohne störende Werbung auf DVD gebrannt werden können. Diese Video-DVD ist dann auch in einem Stand-alone Player abspielbar.

Weitere Features

  • Aufnahmen brennen bzw. sichern als Daten-DVD (Die ist dann nicht in einem Stand-alone-Player abspielbar).
  • Auswahl, welche Tonspuren verarbeitet werden sollen (mp2 und/oder AC3)
  • Aufnahmen als Videoclips speichern und eine Playlist für mplayer anlegen
  • Mpeg1-Aufnahmen (SVCD) als Videoclips speichern und in die Playlist aufnehmen
  • Normalisieren der mp2-Tonspur
  • Requantisierung, wenn der Film zu lang für eine einzige DVD wird
  • Screenshots aus dem Film erstellen
  • Direktdruck auf DVD (Das Vorhandensein von Druckschablonen wird dabei vorausgesetzt)
  • Schneiden der Aufnahme (nicht bei mpeg1)

Der tiefere Sinn des Ganzen

An Hand dieses Programmes soll gezeigt werden, wie mit einem Bash-Script die Verarbeitung einer DVB-Aufnahme zu einer Video-DVD automatisiert werden kann. Und um alles noch ein bißchen interessanter zu machen, ist eine Bedienoberfläche (GUI) hinzugekommen, mit der sich das Script mühelos bedienen läßt. Der dornenreiche Weg zu dieser GUI, die mit Kommander erstellt wurde, wird in einem seperaten Artikel behandelt.

Gliederung des Programmes

Das Programm setzt sich aus drei Teilen zusammen, die nur gemeinsam funktionsfähig sind:

  • Installations-Script: Dieses Bash-Script dient, wie der Name schon sagt, der Installation des Ganzen.
  • Kommander-Script: Programmcode der GUI.
  • Arbeits-Script: Bash-Script, mit dem die eigentliche Arbeit verrichtet wird.

Kurzanleitung

Hilfsprogramme

Es müssen folgende Programme installiert sein:

  • mplex
  • tcrequant
  • dvdauthor
  • ProjectX.jar
  • normalize
  • ffmpeg
  • growisofs
  • vlc
  • mplayer

Hier steht, wo diese Programme zu finden sind: Die Helferprogramme

Zusätzlich sind notwendig:

  • kdialog (kde4-kdialog)
  • kommander

Beide Programme gehören zur Standardausstattung von OpenSuse 11.0 (mit KDE) und können mit Yast installiert werden.

Installation

  • Leere Textdatei erzeugen, irgendwo im Heimatverzeichnis
  • An den Namen der Textdatei ein .sh anhängen (im Worten: Punkt sh ohne Leerzeichen dazwischen)
  • Die Textdatei ausführbar machen (Damit ist aus der Textdatei eine ausführbare Script-Datei geworden, bei der nur noch der Inhalt fehlt)
  • Den Installationcode aus dem Wiki in diese Datei kopieren.
  • Die Script-Datei in einem Terminal starten (oder Rechtsklick auf die Datei, Öffnen mit Sonstige, sh, Im Terminal ausführen)
  • Wenn danach gefragt wird, einen Pfad für das Hauptverzeichnis festlegen.
  • Wenn danach gefragt wird, Pfade zu Hilfsprogrammen auswählen.
  • Das Ende der Installation mit OK bestätigen.

Kopieren der Programm-Codes

Kommander-Code

  • Den guicode aus dem Wiki in folgende Textdatei kopieren: ~/DVB_Script/GUI/guicode.kmdr
  • Die Textdatei ausführbar machen.

Bashscript-Code

  • Den scriptcode aus dem Wiki in folgende Textdatei kopieren: ~/DVB_Script/Script/scriptcode.sh
  • Die Textdatei ausführbar machen.

(~/DVB_Script abändern, wenn während der Installation ein anderes Hauptverzeichnis gewählt wurde)

Start

Das Programm kann auf mehrere Arten gestartet werden. Hier eine Auswahl:

  • Recommanded: Linksklick auf die Desktop-Datei im Verzeichnis ~/Desktop
  • Terminal: kmdr-executor ~/DVB_Script/GUI/guicode.kmdr (~/DVB_Script abändern, wenn während der Installation ein anderes Hauptverzeichnis gewählt wurde)
  • Linksklick auf die gerade erwähnte kmdr-Datei. Es öffnet sich das Editor-Fenster von Kommander. Hier auf Exec drücken.

Bedienung des Programms

  • Starten des Programms
  • Auswählen der gewünschten Aktion
  • Klicken auf Go

Im Fortschrittfenster wird angezeigt, wie weit die Bearbeitung fortgeschritten ist.

Im Debugfenster kann der Fortschritt noch genauer beobachtet werden. Dieses Fenster ist beim Programmstart aktiviert. Man kann es über den Aus-Knopf deaktivieren. Das Debugfenster zeigt immer die neuesten Meldungen an. Möchte man ältere Meldungen sehen, so kann dies ebenfalls über den Aus-Knopf erreicht werden.

Die GUI kann keine zweite Aufgabe starten, solange die gerade laufende Arbeit nicht erledigt ist. Das bedeutet auch, daß die Einstellungen am Debugfenster vor dem Drücken des Go-Knopfes zu erfolgen haben. Nach Beenden der Aufgabe kann der Fensterinhalt auch noch angesehen werden (Fehlersuche), solange das Programm nicht vollständig beendet wurde (nach Ablauf von 1000 Sekunden oder nach Drücken auf das Popupfenster, welches das Ende ankündigt).

Es ist zu beachten, daß die Bearbeitung eines längeren Filmes auch länger dauern kann. Das Tool mplex hat leider die Angewochnheit, keine Fortschrittanzeige zu produzieren. Man darf aber von folgenden Zeiten ausgehen: Das Multiplexen wird ebenso lange dauern wie das Demultiplexen mit ProjectX. Und das können schon einmal 5 bis 10 Minuten sein (in Abhängigkeit von Rechner und Filmgrösse). Also, nicht die Geduld verlieren!

Die Details: Das Installations-Script

Hauptprogramm

Hier werden die einzelnen Funktionen des Scriptes nacheinander aufgerufen und ausgeführt. Erst wenn eine Funktion abgearbeitet ist, wird die nächste aufgerufen. Das Hauptprogramm befindet sich am Ende des Scriptes. Das ist notwendig, da beim Scriptstart erst alle Funktionen geladen werden müssen, um verwendet werden zu können.

Hier die einzelnen Funktionen in der Reihenfolge, in der sie vom Hauptprogramm abgerufen werden.

  • defaultwerte_laden
  • verzeichnisstruktur_inifiles
  • hauptverzeichnis_festlegen
  • verzeichnisstruktur_hauptfiles
  • ini_file_pjx
  • hilfsprogramme_abfragen
  • desktop_datei_anlegen
  • hinweis

Funktionen

Schauen wir nun, was in den Funktionen geschieht:

defaultwerte_laden ()

Viele User werden ihre Aufnahmen, Videoclips und OpenOffice-Dateien an Orten abspeichern, die ihnen sinnvoll erscheinen. Hier kann der Nutzer diese Pfade eingegen. Ändert er nichts, werden Default-Einstellungen verwendet:

  • aufnahmeordner: Hier speichert das Aufnahmeprogramm (z.B. kaffeine) die DVB-Aufnahmen.
  • schablonenordner: Hier befinden sich die Druckschablonen für den DVD-Direktdruck. Wie solche Schablonen selber gebaut werden können, steht hier: DVD Direktdruck
  • clipordner: Hier werden die fertigen Videoclips gepeichert

verzeichnisstruktur_inifiles ()

Um die Kommunikation zwischen Arbeitsscript und GUI zu gewährleisten, müssen einige Dateien an fest definierten Orten stehen. Hierzu wird das Verzeichnis ~/.dvb_script_gui.ini erstellt, das einige Unterverzeichnisse besitzt:

  • fortschrittfenster: Diese Datei enthält den im Script festgelegten Text, der dann in der GUI angezeigt werden kann
  • debugfenster: In diese Datei wird die Standard-Fehlerausgabe der verwendeten Scriptbefehle umgeleitet. Sie kann in der GUI angezeigt werden.
  • pfad_hauptverzeichnis: Hier steht der Pfad zum Hauptverzeichnis drin, der im nächsten Schritt festgelegt wird
  • X.ini.film: Das ist die Initialisierungdatei für ProjectX
  • aufnahme-, schlablonen, clipordner: Hier stehen die vorhin festgelegten Default-Pfade
  • hilfsprogramme: Hier sind die Pfade zu den Hilfsprogrammen enthalten, die nachher noch abgefragt werden

hauptverzeichnis_festlegen ()

In dieser Funktion wird der Pfad zum und der Name des Hauptverzeichnisses abgefragt und angelegt. Die prinzipielle Wirkungsweise dieser Funktion kann hier nachgelesen werden: Basisverzeichnis_festlegen

verzeichnisstruktur_hauptfiles ()

Die vom Programm benötigte Verzeichnisstruktur wird nun erzeugt. Hier die Erläuterung zu einigen der Verzeichnisse:

  • ${hauptverzeichnis}/gui/guicode.kmdr: In diese Datei muß der User den Programmcode der Bedienoberfläche kopieren (siehe die Kurzanleitung oben)
  • ${hauptverzeichnis}/script/scriptcode.sh: In diese Datei muß der User den Programmcode des Arbeitsscriptes kopieren (siehe die Kurzanleitung oben)
  • ${hauptverzeichnis}/save: Enthält die fertig bearbeiteten Files (DVD-Struktur und/oder TS-Files), die noch gebrannt werden müssen
  • ${hauptverzeichnis}/screenshot: Hier findet man die Screenshots, die dann für den DVD-Direktdruck verwendet werden können
  • ${hauptverzeichnis}/temp/*: Temporäre Ordner, die beim Programmstart geleert werden

So noch nicht vorhanden, werden noch die Verzeichnisse für Aufnahhme, Videoclips und Druckschablonen angelegt.

ini_file_pjx ()

Die Initialisierungsdatei für ProjectX ist hier erklärt: X.ini

hilfsprogramme_abfragen ()

Die prinzipielle Wirkungsweise dieser Funktion kann hier nachgeschlagen werden: Programmerkennung

desktop_datei_anlegen ()

Eine Desktop-Datei ist eine Startdatei für ein Programm. Sie kann in KDE einfach erstellt werden, in dem man mit der rechten Maustaste auf die Arbeitsfläche klickt und im Kontextmenue dann auswählt: < Neu erstellen - Verknüpfen mit Programm > Dann einfach alles Notwendige ausfüllen.

Der Code einer solchen Startdatei kann mit kate angesehen werden. Hier die Erklärung der wichtigsten Einstellungen für unseren speziellen Fall, nämlich den Start des DVB-Script-Programmes:

  • Exec=kmdr-executor ${hauptverzeichnis}/gui/guicode.kmdr: Mit diesem Eintrag startet das Programm
  • Icon=kcmperformance: Eine kleine Rakete wurde als Icon für die Startdatei ausgewählt
  • Terminal=false: Das Programm nicht in einem Terminal ausführen

Das Startprogramm wird hier angelegt: ~/Desktop/DVB-Script

Nach erfolgreicher Installation kann das Programm durch Linksklick auf diese Datei gestartet werden.

Die Details: Der Guicode

In der Datei ${hauptverzeichnis}/gui/guicode.kmdr findet man den für die Bedienoberfläche verantwortlichen Programmcode. Dabei handelt es sich eigentlich um ein XML-File, dessen Struktur mit einem Texteditor (kate) angesehen werden kann.

Diese Datei kann auf zwei Arten, abhängig von den Intentionen des Nutzers, gestartet werden:

  • kmdr-executor ${hauptverzeichnis}/gui/guicode.kmdr Damit wird die GUI und damit das DVB-Programm gestartet
  • kmdr-editor ${hauptverzeichnis}/gui/guicode.kmdr Die Bedienoberfläche öffnet im Editor-Modus und kann verändert (umprogrammiert) werden

In einem seperaten Artikel wird gezeigt, wie mit Hilfe eines kmdr-Kommander-Programmes eine GUI für ein Shellscript erstellt werden kann. Die Benutzeroberfläche für das DVB-Script wird dann als Beispiel dienen und ausführlich erklärt werden.

Die Details: Der Scriptcode

Bei diesem Bashscript handelt es sich um eine angepasste Version des DVB-Wiki-Scriptes. Die Funktionsweise des Scriptes kann im Wikibuch nachgelesen werden werden. Einige Änderungen waren notwendig, um das Script zur Zusammenarbeit mit der GUI zu bewegen. Diese Änderungen werden hier kurz beschrieben:

Start der gewünschten Aufgabe

Das Script aus dem Wiki-Buch war ein einziges großes Script, das alles enthielt: Installation, Auswahl der Aufgaben, Ausführung der Aufgaben.

Die Auswahl der Aufgaben wird nunmehr in der GUI erledigt. Es wird dabei eine Kennzahl (z.B. 11 für das Bearbeiten und Brennen einer Video-DVD) an des Arbeitsscript übergeben. Diese Kennzahl wird in der schon vom DVB-Wiki-Script bekannten Variablen was_tun gespeichert. Damit kann die Struktur des restlichen Wiki-Scriptes ohne große Änderungen verwendet werden.

Die Übernahme der Kennzahl erfolgt mit dem Befehl

was_tun=$1

Altbekannt und problemlos also!

Texte zur Information des Benutzers

Um den User immer auf dem Laufenden zu halten, wie weit die Bearbeitung schon fortgeschritten ist, ist es notwendig, das Wiki-Buch-Script in einer Konsole zu starten. Das Konsolenfenster dient dann als Fortschrittfenster. Ein und Ausgaben erfolgen mit kdialog.

Im neuen Script wurde die Verwendung von kdialog für Ein- und Ausgaben beibehalten. Die Fortschrittanzeige dagegen wurde an die GUI übergeben.Und das funktioniert so:

Das Fortschrittfenster

Der Inhalt der Datei ~/.dvb_script_gui.ini/fortschrittfenster wird in der GUI periodisch abgefragt und dann in einem Fenster zur Anzeige gebracht. Diese Datei wird vom Arbeitsscript mit Text gefüllt:

Die Scriptfunktion fenster1 ()

fenster1 ()
{
echo "$1" > ~/.dvb_script_gui.ini/fortschrittfenster
}

Die Datei ~/.dvb_script_gui.ini/fortschrittfenster wird mit dem Text gefüllt, welcher beim Aufruf der Funktion übergeben wird. Der alte Inhalt der Datei wird dabei gnadenlos und ohne Rückfrage überschrieben.

Die Scriptfunktion fenster1_mehr ()

fenster1_mehr ()
{
echo "$1" >> ~/.dvb_script_gui.ini/fortschrittfenster
}

Der an diese Funktion übergebene Text wird an den schon in der Datei ~/.dvb_script_gui.ini/fortschrittfenster vorhandenen Text angehängt. So kann ein wunderschönes Fortschrittslog erzeugt werden.

Die Scriptfunktion programmende ()

programmende ()
{
fenster1_mehr ""
fenster1_mehr "Ende"
kdialog --passivepopup "Programmende" 1000
fenster1 ""
exit

An Hand dieser Funktion soll gezeigt werden, wie das Ganze funktioniert. Diese Funktion wird im Script dann aufgerufen, wenn durch irgend einen Umstand das Programm beendet werden soll. Sie macht dann Folgendes:

  • fenster1_mehr "": Der Funktion fenster1_mehr wird "nichts" übergeben. Das äußert sich in einer Leerzeile in der Datei ~/.dvb_script_gui.ini/fortschrittfenster und damit im Anzeigefenster in der GUI.
  • fenster1_mehr "Ende": Nun wird in die nächste Zeile der Datei ~/.dvb_script_gui.ini/fortschrittfenster der Text "Ende" geschrieben.
  • kdialog --passivepopup "Programmende" 1000: Mit einem Popup wird die Anzeige "Programmende" auf den Bildschirm gebracht. Diese Anzeige bleibt 1000s lang stehen, wenn nicht auf das Popup-Fenster geklickt wird. Ist diese Zeit abgelaufen oder ein Ungeduldiger hat doch auf das Popup geklickt, dann gehts weiter mit der Funktion fenster1.
  • fenster1 "": Es wird eine Leerzeile in die Datei ~/.dvb_script_gui.ini/fortschrittfenster geschrieben. Diesmal wird der alte Dateitext aber überschrieben. Der Inhalt der Datei wird also quasi gelöscht.
  • exit: Dasx Arbeitsscript wird verlassen und die Steuerung an die GUI übergeben. Dort kann eine neue Aufgabe angewählt werden oder Feierabend gemacht werden.

Alles klar?

Das Debugfenster

Ein zweites Textfenster ist in der GUI vorhanden, das ebenso funktioniert wie das Fortschrittfenster. Dazu wird die Datei ~/.dvb_script_gui.ini/debugfenster von der GUI periodisch abgefragt und der Inhalt dieser Datei im Debugfenster zur Anzeige gebracht.

Der Sinn des Ganzen ist es, Meldungen der gerade laufenden Hilfsprogramme in einem Log anzuzeigen. Dies kann gut zur Fehlersuche bei der Scriptprogrammierung oder auch nur als eine erweiterte Fortschrittanzeige genutzt werden, ganz nach den Notwendigkeiten und Wünschen des Nutzers.

Mit folgender Anweisung werden die Meldungen, welche die Hilfsprogramme über den Standard-Fehlerkanal absetzen, zeilenweise in die Datei ~/.dvb_script_gui.ini/debugfenster geschrieben:

exec 2> ~/.dvb_script_gui.ini/debugfenster

Playlist für mplayer

Playlist erzeugen

playlist_aktualisieren ()
{
find $clip_pfad/* > ~/.mplayer/playlist
}

Für Mplayer gibt es das versteckte Verzeichnis ~/.mplayer. In diesem Verzeichnis kann eine Wiedergabeliste angelegt werden mit dem Name playlist. Die abzuspielenden Videoclips müssen zeilenweise in dieser Datei stehen.

In der Variablen clip_pfad ist der Pfad zu dem Verzeichnis enthalten, in dem die fertig bearbeiteten Videoclips gespeichert werden. Diese Clips werden mit find gesucht und in die Datei ~/.mplayer/playlist geschrieben.

Diese Aktualisierung wird jedesmal ausgeführt, wenn im Programm eine neue Aufgabe gestartet wird.

Playlist abspielen

Die Wiedergabeliste kann mit folgendem Befehl abgespielt werden:

mplayer -xy 1280 -playlist ~/.mplayer/playlist -shuffle -vf pp=lb -fixed-vo
  • mplayer: Aufruf von mplayer.
  • -xy 1280: Grösse des Ausgabefensters. Es genügt die Angabe der horizontalen Pixelzahl, die vertikale Anzahl der Bildpunkte wird dann automatisch eingestellt.
  • ~/.mplayer/playlist: Hier ist die Wiedergabeliste gespeichert.

Alle Angaben, die nach der Playlist kommen, beziehen sich auf die komplette Wiedergabeliste, nicht auf ein einzelnes Lied aus der Liste.

  • -shuffle: Die Auswahl der Videoclips erfolgt nach dem Zufallsprinzip.
  • -vf pp=lb: Einschalten eines linearen Deinterlace-Filters.
  • -fixed-vo: Alle Clips werden in einem einzigen Fenster abgespielt.


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


Zurück zur Multimedia-Übersicht