Projectx

Aus Linupedia
Wechseln zu: Navigation, Suche
Diese Beschreibung wurde mit folgenden Distributionen getestet:

OpenSuse 10.3 (32Bit) mit KDE 3.5.x
OpenSuse 11.0 (32Bit) mit KDE 4.0, 4.1
OpenSuse 11.1 (32Bit) mit KDE 4.2
OpenSuse 11.2 (32Bit) mit KDE 4.3, 4.4
OpenSuse 11.3 (32Bit) mit KDE 4.5
OpenSuse 13.1 (64Bit) mit KDE 4.11


ProjectX unter Linux! Wie das mit OpenSuse geht, ist hier erläutert.

Inhaltsverzeichnis

Die Eigenschaften von ProjectX

Was kann verarbeitet werden

PJX ist ein Java-Programm, mit dem DVB-Streams demultiplext werden können. Die Eigenschaften im Einzelnen können hier nachgelesen werden:
Einige Erläuterungen zu Project X von dvb.matt (Autor Project X)

Vorteile

  • Eingebaute Schnittmöglichkeit
  • Fehlerbereinigung des Streams beim Demultiplexen
  • Synchronisation von Audio und Video beim Demultiplexen
  • Mögliche Decodierung der Tonspur

Das könnte noch verbessert werden

  • Der Schnitt erfolgt leider nur an den I-Frames
  • Eine "Tonvorschau" wäre beim Schneiden, gerade von Videoclips, manchmal hilfreich
  • Die Bedienungsanleitung ist nicht einmal annäherungsweise aktuell

Versionen

Es gibts zwei Versionen von PJX, die Standardversion und die CVS-Version.

Standardversion

Stabile Basisversion des Tools. Aktuell ist zur Zeit "Project X Version 0.91.0.00" (Stand April 2014)

CVS-Version

Diese Version gibt den aktuellen Entwicklungsstand des Programms wieder. Im Moment (April 2014) ist das "Project X Version 0.91.0.10/07.02.2014".

Download und Installation

Standardversion

Herunterladen

Das RPM ist im Packman-Repository enthalten. Ist es noch nicht geschehen, sollte dieses Repository als Online-Updatequelle in Yast hinzugefügt werden.

Installieren

Über Yast

CVS-Version

Für diese Version existieren keine RPMs, sie muß also selbst heruntergeladen und kompiliert werden

Herunterladen

Zum Herunterladen ist das Tool "CVS" erforderlich (Falls noch nicht vorhanden, vorher mit Yast installieren).

In einer Konsole wird danach folgender Befehl eingegeben:

cvs -z3 -d:pserver:anonymous@project-x.cvs.sourceforge.net:/cvsroot/project-x co -P Project-X

Dadurch wird im Heimatverzeichnis des Users ein Ordner mit dam Namen "Project-X" erstellt, der die notwendigen Dateien aus dem CVS-Repository enthält.

Kompilieren

Folgende Anweisung in eine Konsole hacken, um in den Installationsordner zu kommen:

cd ~/Project-X

Hiermit die Installation durchführen:

sh build.sh

Damit befindet sich nun im Installationsordner die eigentliche Programmdatei von PJX.

Programmstart Standardversion

OpenSuse 10.3 (KDE 3.5.x)

Mit Hilfe des KDE-Startmenue's

OpenSuse 11.0 (KDE 3.5.x)

Mit Hilfe des KDE-Startmenue's

OpenSuse 11.x (KDE 4.x)

Mit Hilfe des KDE-Startmenue's. Sollte es da Probleme geben, kann zum Starten eine Desktop-Datei erstellt werden (wie, das ist weiter unter erklärt).

Programmstart CVS-Version

bequem

Durch Klicken auf das Icon der Desktop-Datei.
Die Desktop-Datei befindet sich im Installationsordner von PJX und kann an einen beliebigen Ort, zum Beispiel auf den Desktop kopiert werden. Dabei ist zu beachten, daß in den Eigenschaften der Desktop-Datei im Reiter Programm der Startbefehl den korrekten Pfad bekommt (siehe ein paar Zeilen weiter unten im Abschnitt Die Desktop-Datei).

nicht ganz so bequem

  • Wechseln in den Installationsordner von PJX.
  • Rechtsklick auf "ProjectX.jar"
  • Öffnen mit "java -jar"

Die Desktop-Datei

Um den Programmstart komfortabel zu gestalten, gerade bei der CVS-Version oder wenn's mit dem KDE-Startmenue nicht funktionieren will, kann eine Desktop-Datei erstellt bzw. angepasst werden. Durch Linksklicken auf diese Datei legt PJX dann los!

KDE 3.5.x

  • Rechtsklick auf die Arbeitsoberfläche
  • Neu erstellen -Verknüpfung zu Programm: Namen angeben, unter dem das Icon danach auf dem Bildschirm erscheinen soll (Beispiel: ProjectX_CVS)
  • Links auf das Zahnrad klicken, um ein Bild für das Icon auszuwählen
  • Den Reiter "Programm" auswählen und unter "Befehl" den Programmnamen mit vollständiger Pfadangabe eintragen (Beispiel: java -jar ~/Project-X/ProjectX.jar für die CVS-Version)
  • Einige Male auf OK drücken

KDE 4.x

  • Den Dateimanager (Dolphin) öffnen
  • Im persönlichen Ordner das Verzeichnis "Desktop" öffnen. Es öffnet sich ein Fenster.
  • Rechtsklick auf die Arbeitsfläche dieses Fensters
  • Neu erstellen -Verknüpfung zu Programm: Namen angeben, unter dem das Icon danach auf dem Bildschirm erscheinen soll (Beispiel: ProjectX_CVS)
  • Links auf das Zahnrad klicken, um ein Bild für das Icon auszuwählen
  • Den Reiter "Programm" auswählen und unter "Befehl" den Programmnamen mit vollständiger Pfadangabe eintragen (Beispiel: java -jar ~/Project-X/ProjectX.jar)
  • Einige Male auf OK drücken

Das Desktop-Verzeichnis (desktop-folder) kann nun auf die Arbeitsoberfläche (Plasma) gezogen werden. Wird dabei die Ordner-Ansicht gewählt, dann sieht man den Inhalt des Ordners auf der Arbeitsoberfläche und kann direkt auf die eben erstellte Desktop-Datei zugreifen.

Es ist übrigens nicht unbedingt notwendig, eine Desktop-Datei im Desktop-Ordner zu erzeugen. Es kann vielmehr ein beliebiger anderer Ordner dazu verwendet und auf die Arbeitsoberfläche gezogen werden.

Hier habe ich den Umgang mit Desktop-Dateien in KDE4 genauer beschrieben: K-Menü und die Desktop-Dateien

Der erste Start von ProjectX

Zustimmung zur Lizenz

Bedienoberfläche von ProjectX

Nachdem PJX auf eine der oben genannten Arten gestartet wurde, erscheint zunächst die Bitte um Zustimmung zur Lizenz, die mit "I agree" beantwortet werden kann. Anschließend sehen wir die Benutzeroberfläche des Programms. Hier im Beispiel ist es die CVS-Version (b29).

Sprache ändern

Die Sprache ist per default auf Englisch eingestellt. Das läßt sich aber leicht ändern:

  • Einstellungen - Sprache - de

Und schon ist es Deutsch

Speichern der Änderungen

ProjectX speichert Änderungen an den Einstellungen in einer Konfigurationsdatei. Diese Datei hat den Namen "X.ini" und wird, wenn nichts anderes vorgegeben ist, im persönlichen Ordner des Anwenders erzeugt. So erscheint zum Beispiel die Änderung der Sprache in dieser Datei.

PJX speichert die Einstellungen automatisch beim Verlassen des Programms. Der nächste Programmstart erfolgt dann mit den gespeicherten Einstellungen.

X.ini nach dem ersten Start

Nach den eben vorgenommenen Änderungen sieht die (sozusagen jungfräuliche) Konfigurationsdatei so aus:

# Project-X INI
# ProjectX 0.90.4.00.b32

# Application
Application.Agreement=1
Application.Language=de

# WindowPosition
WindowPosition.Main.Height=670
WindowPosition.Main.Width=866
WindowPosition.Main.X=50
WindowPosition.Main.Y=50

Soweit alles klar! Oder?

Arbeiten mit der GUI von PJX

An einigen Beispielen soll das Arbeiten mit der GUI von PJX erläutert werden.

Demultiplexen einer DVB-Aufnahme

Aktion Demultiplexen auswählen

Links oben in der GUI befindet sich ein Feld mit dem aussagekräftigen Namen "Prozess".

In diesem Feld wird der Schalter "anpassen.." gedrückt. Im nun erscheinenden Prozessfenster erkennt man, daß die Aktion "demultiplex" schon angekreuzt ist. Da braucht also nichts geändert werden.

Fester Zielordner

Es ist bestimmt keine schlechte Idee, das Bearbeitungsergebnis, also den demultiplexten Stream, in einem vorgegebenen Zielordner zu speichern. (Zum Beispiel: ~/filme/dvd_tmp). Dazu wird rechts unten im Hauptfenster dieser Zielordner zur Liste der Ausgabepfade hinzugefügt (zu finden unter dem Reiter "Dateiliste").

Ist der Zielordner noch nicht vorhanden, muß er vorher angelegt werden.

Zu bearbeitende (DVB) Datei laden

Den DVB-Stream in die Dateiliste eingetragen. Dazu den Ordner-Icon mit dem grünen + drücken und das gewünscht File laden.

Bearbeitung starten

Den Button "Quickstart" drücken

Dazugehörige X.ini

# Project-X INI
# ProjectX 0.90.4.00.b32

# Application
Application.ActiveDirectory=/home/ich
Application.Agreement=1
Application.Language=de
Application.OutputDirectories.0=/home/ich/filme/dvd_tmp
Application.OutputDirectory=/home/ich/filme/dvd_tmp

# WindowPosition
WindowPosition.Main.Height=670
WindowPosition.Main.Width=866
WindowPosition.Main.X=50
WindowPosition.Main.Y=50

Schneiden einer DVB-Aufnahme

PJX bietet die Möglichkeit, einen Film an den I-Frames zu schneiden. Das hat den Vorteil, daß nur die Daten demultiplext werden, die auch tatsächlich weiter verarbeitet werden sollen. Und das geht so:

Der Weg

  • Film laden
  • Im Hauptfenster den Reiter "Schnittsteuerung" auswählen
  • Über die Navigation bzw. den Laufbalken (Preview-Slider) die gewünschten Schnittpunkte anfahren und hinzufügen (Icon mit dem grünen "+")
  • Auf dem Balken unter dem Vorschaubild kann der Erfolg der Arbeit beobachtet werden: Was grün ist, bleibt drin und das Rote wird herausgeschnitten.
  • Den Button "Quickstart" drücken

Da vorhin als Aktion "Demultiplexen" ausgewählt wurde, wird der Film nun geschnitten und demultiplext. Das Ergebnis findet sich in "~/filme/dvd_tmp".

Tipps zum Schneiden

Die Werbung rausschneiden geht einfach, das haben wir gerade gesehen. Um sie zu entfernen, müssen wir sie aber erst einmal finden. Ich habe mir hierzu eine Methode angewöhnt, die mich sicher und vor allen Dingen schnell die gewünschnten Schnittpunkte finden läßt. Diese Methode möchte ich euch im folgenden erläutern:

Jeder Sender blendet heute irgendwo sein Logo ein. Ist kein Logo vorhanden, kann man davon ausgehen, daß gerade Werbung läuft. Und das ist eine große Hilfe bei der Suche nach einem Werbeblock, vor allem, wenn man den Film selbst nicht kennt. Also:

  • Film laden
  • Schnittsteuerung auswählen
  • Filmanfang suchen und als Schnittpunkt hinzufügen
  • Mit dem Button >>> vorspulen, bis das Sendelogo weg ist (Werbung!)
  • Mit dem Button << zurückspulen, bis das Logo wieder da ist (Film)
  • Vorschau-Slider: Cursor irgendwohin rechts vom Reiter positionieren und linke Maustaste gedrückt halten. Damit wird der Film abgespielt.
  • Wenn die Werbung wieder da ist, die linke Maustaste loslassen
  • Cursor links neben den Reiter positionieren
  • Durch Linksklick Bild für Bild zurückspulen, bis der Film wieder da ist
  • Schnittpunkt auswählen
  • usw.

Das klingt vielleicht etwas kompliziert. Probiert es aber einmal aus, es ist eine schnelle Methode, bei der man nicht viel denken muß. Ein Problem gibt es aber dennoch, wenigstens bei manchen Sendern.

Es gibt einige Sender, die wiederholen nach der Werbung einen kleinen Teil des schon gezeigten Films. Das empfinde ich zwar als unsinnig, aber ich werde da leider nicht um meine Meinung gefragt. Hier hilft dann nur die genaue Suche nach dem Schnitt. Da in der CVS-Version von ProjectX die Schnittpunkte als kleine Vorschaubilder angezeigt werden, kann das aber auch relativ schnell bewältigt werden.

Wie eigentlich bei allen Dingen kann man auch hier sagen: Übung macht den Meister...

Den Ton beim Demultiplexen decodieren

Manchmal benötigt man den Ton nicht als m2t-Datei, sondern als wav-file. Das kann beim Demultiplexen gleich mit erledigt werden. Folgende zusätzliche Einstellung ist dazu notwendig:

Einstellung

  • Einstellungen - Audio: "dekodiere MPEG Layer1,1 zu PCM".

Dazugehörige X.ini

# Project-X INI
# ProjectX 0.90.4.00.b32

# Application
Application.ActiveDirectory=/home/ich
Application.Agreement=1
Application.Language=de
Application.OutputDirectories.0=/home/ich/filme/dvd_tmp
Application.OutputDirectory=/home/ich/filme/dvd_tmp

# AudioPanel
AudioPanel.decodeMpgAudio=1

# WindowPosition
WindowPosition.Main.Height=670
WindowPosition.Main.Width=866
WindowPosition.Main.X=50
WindowPosition.Main.Y=50

Die Konfigurationsdatei X.ini

Was genau ist die X.ini?

Das ist die Konfigurationsdatei von ProjectX. In ihr werden die Einstellungen gespeichert, mit denen das Programm gerade läuft. Für jede Einstellung existiert ein dazugehöriger Eintrag in der "X.ini" (und das sind viele!). Angezeigt werden nur solche Einstellungen, die von den Standardeinstellungen abweichen, bzw. die bereits einmal geändert worden sind.

Wann wird gespeichert?

Die aktuellen Einstellungen der GUI werden beim Verlassen von PJX in die "X.ini" geschrieben.

Kann das automatische Speichern abgeschalten werden?

Ja, es kann. Und es kann durchaus sinnvoll sein, nicht zu speichern.

ProjectX bietet eine Menge Knöpfe, die gedrückt, und noch mehr Häckchen, die gesetzt oder weggenommen werden können. Wenn man weiß, was mit diesen Häckchen bewirkt wird, ist das kein Problem. Weiß man es nicht, sind Schwierigkeiten vorprogrammiert. Beendet man nämlich das Programm, wird der aktuelle Stand gespeichert, auch wenn er nicht funktioniert. Und der Weg zurück kann ein langer Weg sein, wenn man sich die einzelnen Schritte des Hinweges nicht eingeprägt hat.

Folgende Möglichkeiten gibt es, das Speichern abzuschalten:

über die GUI

  • Einstellungen - Einstellungen beim Beenden speichrn: Den Haken wegmachen
  • Einstellungen - Einstellungen - Datei - speichern unter: Den Pfad zur aktuellen "X.ini" eintragen
  • OK drücken

durch Editieren der X.ini

  • PJX beenden
  • "X.ini" mit einem Testeditor ändern
  • Folgenden Eintrag hinzufügen:
Application.SaveSettingsOnExit=0
  • Änderungen im Editor speichern

Speicherort der X.ini ändern

Die Initialisierungdatei wird im Arbeitsordner des Programms abgelegt und das ist ohne weitere Angeben das Heimatverzeichnis des Benutzers. Wird ProjectX über eine Desktop-Datei gestartet, so kann in dieser Desktop-Datei ein anderes Arbeitsverzeichnis für PJX festgelegt werden:

  • Rechtsklick auf Datei projectx.desktop
  • In den "Eigenschaften" den Reiter "Programm" anwählen
  • In das Feld "Arbeitsordner" den gewünschten zukünftigen Standort von X.ini eintragen (Beispiel: ~/PJX_demux)
  • OK drücken

So lassen sich also mit Hilfe verschiedener Desktop-Dateien unterschiedliche Arbeitordner für PJX einstellen. In jedem dieser Arbeitsordner befindet sich dann, wenn man es schlau anstellt, eine "X.ini" mit genau den Einstellungen, die man wünscht.

ProjectX und die Kommandozeile

PJX kann über über die Kommandozeile, das sogenannte CL-Interface bedient werden. Durch diese Möglichkeit kann das Programm auch in einem Bash-Script verwendet werden. Folgender Programmaufruf soll als Beispiel dienen. Er stammt aus einem von mit erstellten Script zur DVB-Weiterverarbeitung, das hier nachgelesen werden kann:
Vom DVB zur DVD, ein Wikibuch

Befehl

java -jar $pjx -demux -gui -ini $hauptverzeichnis/X.ini -out $hauptverzeichnis/tmp1 -name film "$quelldatei"


Erläuterung

  • java -jar

Aufruf von Java (PJX ist ein Java_Programm)

  • $pjx

Pfad zur Datei ProjectX.jar

  • -demux

es wird demultiplext

  • -gui

Zusätzlich soll die Bedienoberfläche von PJX gestartet werden, vielleicht um Schneiden zu können.

  • -ini $hauptverzeichnis/X.ini

Diese Datei soll als Konfigurationsdatei verwendet werden. Sie muß übrigens nicht zwingend X.ini heißen, sondern kann einen beliebigen Namen haben.

  • -out $hauptverzeichnis/tmp1

In dieses Verzeichnis wird das Ergebnis gespeichert

  • -name film

Das Ergebnis bekommt den Dateinamen "film"

  • $quelldatei

Datei, welche bearbeitet werden soll.

Die "Dinger" mit dem $ davor sind übrigens selbsterstellte Variablen. Sie stehen stellvertretend für ihren Inhalt.

Kompletter Befehlsaufruf

Ausgeschrieben könnte obiger Befehl also so aussehen:

java -jar ~/Project-X/projectX.jar -demux -gui -ini ~/dvb_wiki_script/X.ini -out ~/dvb_wiki_script/tmp1 -name film ~/DVB/Aufnahme/ein_toller_film.m2t

Komandozeilen-Optionen

Hier kann nachgelesen werden, mit welchen Argumenten PJX über das CLI aufgerufen werden kann:
http://forum.dvbtechnics.info/showpost.php?p=10899&postcount=4

Ab der CVS-Version b28 gibt es die Option -set. Damit läßt sich alles, was in der X.ini konfiguriert werden kann, auch über die Kommandozeile steuern. Ein Beispiel:

java -jar ~/Project-X/ProjectX.jar -set OptionPanel.NormalLog=0

Beim Start von PJX wird die Anweisung übergeben, daß keine Log-Datei mitgeschrieben wird.

Tips

Ausführen der build.sh zum Kompilieren

Das Eintippen von build.sh in eine Konsole wird selten den gewünschten Erfolg zeigen, kann dafür aber interessante Fehlermeldungen hervorbringen. So habe ich eine geschlagene Stunde versucht, folgenden Fehler zu beseitigen:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/Main

Dieses Problem wäre gar nicht erst entstanden, hätte ich eine der Grundregeln im Umgang mit Linux-Dateien beachtet: Wenn du eine bestimmte Datei ansprechen willst, dann mußt du auch sagen, wo sich diese Datei befindet.

Ein Beispiel:

~/DVB/Project-X/build.sh

oder, wenn man sich bereits im Ordner ~/DVB/Project-X befindet

./build.sh

Manche Fehler mußt du selber erst einmal gemacht haben, sonst glaubst du es nicht, daß das auch dir passieren kann.

Um aber gar nicht erst in diese Schwierigkeiten zu kommen ist es doch am Besten, so zu verfahren, wie es im Abschnitt Installation beschrieben ist. Schön brav in einer Konsole ins Installationsverzeichnis wechseln und dann mit sh build.sh die Installation starten. So braucht außerdem die build.sh nicht ausführbar gemacht werden.

Welche Java-Version?

Aktuell habe ich die folgende Version drauf:

java version "1.7.0_51"

Wenn man die CVS-Version von project-X selber compilieren möchte, dann benötigt man zusätzlich zur Standardausstattung noch den Java-Compiler. Dieser ist in dem entsprechenden devel-Paket enthalten, also zum Beispiel in meinem aktuellen Fall:

java-1_7_0-openjdk-devel

Links

Supportseite im dvbtechnics-Forum
Einige Erläuterungen zu Project X von dvb.matt (Autor Project X)
Kommandozeilenoptionen
Vom DVB zur DVD, ein Wikibuch
Projectx oder vom DVB zur DVD part 2
K-Menü und die Desktop-Dateien


Zurück zur Multimedia-Übersicht