Diskussion:Dvb wiki script/Script

Aus Linupedia.org
Wechseln zu: Navigation, Suche

History der ersten Versionen des Scripts

Version 0.0.1

30.03.2008      Grundversion

Version 0.1.0

01.04.2008      Umstellung der Dialoge von Xdialog auf kdialog

Version 0.2.0

15.04.2008      Bearbeitung als ts-stream hinzugefügt

Version 0.2.1

22.04.2008      Optimierung der Requantisierung, Fehlerbereinigung

Version 0.3.0

27.04.2008      Default-Verzeichnis ins Heimatverzeichnis gelegt. Umbau der Variablen- Verzeichnisstruktur

Version 0.4.0

01.05.2008      Hinzugefügt Videoclips Ton normalisieren, mpeg1-Video Bearbeitung, Codeoptimierung

Version 0.4.1

05.05.2008      Fehlerbeseitigung X.ini

Version 0.4.2

06.05.2008      Codeoptimierung Variable, Konfigurationsdateien für PJX automatisch erstellen

Version 0.4.3

12.05.2008      Löschen der Arbeitsordner optimiert (Sicherung gegen ungewolltes Löschen)

Version 0.5.0

20.05.2008      Anzeige und Bedienerführung erweitert, Automatische Installationsroutine eingebaut, Codeoptimierung

Version 0.5.1

22.05.2008      Wiedergabe der fertigen DVD-Struktur vor dem Brennen. Erstellen von Screenshots

Version 0.5.2

01.06.2008      Bug in Funktion "abspielen" beseitigt

Kritik und Verbesserungsvorschläge für das Script

Vorgeschichte

Hatte Probleme eine teilweise defekte und schlecht lesbare (privat) DVD zu kopieren. Das Ergebnis war zwar eine mit xine sauber abspielbare Mpeg-Datei mit optimaler Qualität, allerdings ließ sich diese Datei nicht mit dvdauthor bearbeiten, bekannter Fehler:

 ERR:  SCR moves backwards, remultiplex input.

viele Versuche mit diversen Tools und Howtos aus dem Internet brachten nicht den gewünschten Erfolg, entweder liefen auf der fertigen DVD Video und Ton völlig unsyncron oder sie ließen sich gar nicht muxen. getestet ua. Programme wie transcode, mencoder, ffmpeg mit den verschiedensten erfolgversprechenen Optionen und Varianten, ohne komplettes umcodieren und damit entsprechenden Qualitätsverlust, bestand keine Chance. Also hab ich mal dieses Script hier ausprobiert, und damit gleich mal ausführlich Howto und Script getestet.


Kritik am Script

  • Bei Installation von ProjectX als fertiges Paket für 10.3 war das Script nicht arbeitsfähig. Als Problem stellte sich die X.ini-Datei heraus, die im Verzeichnis /usr/share/java geschrieben werden sollte. Dort ist natürlich schreiben für User verboten, ohne diese Datei jedoch keine Gui. Also habe ich die gesamte X.ini Verwaltung verändert.
  • Wenig schön finde ich das komplette abschalten der kompletten Fehlerausgabe, damit sind Fehler und damit Programabbruch nur äußerst schwer einzukreisen und zu beheben.
  • die "Programmerkennung" über find vom Rootverzeichnis aus ist etwas zu primitiv gelöst und wenn wie bei mir find vor /usr noch ein TByte großesRaid durchnuddelt, dann wirds zeitkritisch. Hier währe wohl eine Lösung mit which oder mit weitaus kürzeren möglichen Verzeichnisspfaden zum durchsuchen, angesagt.
  • das "Anlegen der notwendigen Verzeichnisse" oder Wenn und Aber ist auch nicht besonders schön, könnte man eventuell über if test .... then ; mkdir besser machen.
  • Die gesammte x.ini-Geschichte habe ich für mich umbauen müssen, damit benutzerdefinierte Einstellungen auch dauerhaft erhalten bleiben.
  • "multiplexen mpeg2-Video, AC3- oder/und mp2-Audio" berücksichtigt überhautp nicht, dass da nur eine AC3 ist und keine mp2 . Genau das brauchte ich aber. Das Script an dieser Stelle vollkommen unschön wenn man dort flexibel sein will. Ich musste dort dann auch gleich mal größere Anpassungen machen.
  • irgendwo fehlt mir noch eine Überprüfung auf voraussichtlich genügend Speicherplatz. Da die Fehlerausgabe abgeschaltet ist, muss man bei vollgelaufenen Filesystem erst mal erkennen, was da los ist, und dann geht sowieso nicht mehr viel, da KDE sofort rumzickt und sich beendet, wenn hier als nächstes ein etwas dickeres Programm gestart wird.
  • Das Menufenster war bei mir zu klein, die Zeilen haben nicht alle hineingepasst, dafür war in der Installationsanweisung bei Optimierung für das Ausgabefenster gleich mal 1000x1000 (Vollbild) vorgeschlagen, für die paar Ausgaben die da kommen, absolut überzogen, zumal man damit ja die Installationshinweise verdeckt die man da aber bestimmt noch weiterlesen möchte.


jetzt aber genug gemeckert

  • das wichtigste zuerst, das Script hat das für unmöglich gehaltene einwandfrei geschafft. Eine DVD aus meiner MPEG-Datei mit fehlender oder total fehlerhafter Zeitsyncronisation zu basteln, und das ohne umcodieren. Hat problemlos das gemacht was ffmpeg mit -vsync nicht geschafft hat, und die Videospur zeitlich sauber angepasst. Zwar muss ich es selbst noch mal per Hand multiplexen und authoren, da ich noch Kanäle und Untertitel sowie Menüs hineinbauen möchte, aber immerhin. Hut ab.
  • mit dem richtigen Server (und einigen Tricks (Links)) beim Aufteilen der temporären Dateien auf verschiedene Raids) geht das auch noch recht zügig. (Hatte gleich mal 2 Dualcore Prozessoren, 12GB Speicher und 2 mal Hardwareraid 5 auf das Script angesetzt)
  • Das Ganze macht einen recht guten Eindruck von der Gesamterscheinung, und ist gut und einfach zu bedienen, (mal von ProjectX abgesehen). Das Wikibuch dazu ist jetzt schon Spitze. Mit noch ein paar kleinen Verbesserungen zB der oben angesprochenen Mängel und Unschönheiten am Script, könnte daraus durchaus mal ein sehr universell einsetzbares Paket werden.
  • Gute Arbeit, schöne Wiki-Artikel, weiter so.


meine Änderungen

Ich lege mal hier meine Änderungen als Patch mit ab, alles was ich gebraucht oder gemacht habe. Sie sind nicht 100% ausgetestet. Aber eventuell helfen sie mal bei der nächsten Verbesserung des Scriptes.

Patch entfernt auf Anregung von Robi, da es mit der neuen Version nicht mehr funktioniert. escho 12.6.2008

(edit 03:38, 11. Jun. 2008 (CEST) nach nochmaligem Test auf jungfräulichem Rechner, patch noch mal neu eingestellt, hatte selber ein paar Verwurschtelungen eingebaut ;-)))

Robi 02:17, 10. Jun. 2008 (CEST)


Erste Reaktionen

zur Kritik

  • PJX und X.ini: Fehler erkannt heißt, ihn schon fast beseitigt zu haben
  • Fehlerabschaltung: Ist absichtlich so gemacht, da ich bei der Anwendung nur die Fortschrittsmeldungen sehen will. Für Installation und Fehlersuche habe ich diese Zeile schön auskommentiert.
  • find: wird nur dann zeitkritisch, wenn (beim ersten Scriptstart) notwendige Programme noch fehlen. ab dem zweiten Start ist es kein Problem mehr. Ich werde aber which mal austesten.
  • X.ini Inhalte erhalten: Aber doch wohl nur bei der Standarrdversion von PJX. Bei der CVS Version klappt es, wenigstens bei mir.
  • AC3: Stimmt. Dazu muß ich aber sagen, ich habe nur immer das eingebaut, was sich mir irgendwie in den Weg gestellt hat. Ein alleiniges AC3 war da noch nicht dabei.
  • Speicherplatz: An so etwas habe noch nicht einmal gedacht.
  • Fenstergrössen: Das Konsolefenster habe ich mit Absicht zum Vollbild erklärt. Mir gefällt es einfach so. Die Menuefenster habe ich etwas knapp gehalten. Das werde ich wohl noch ändern. Schade, daß kdialog hier keine automatishe Grössenanpassung vorsieht.

zum genug gemeckert

Danke für die Blumen.
Und das mit den DVD-Menues habe schon im Hinterkopf, so als todo!

zum Patch

Das muß ich mir noch genau ansehen und ausprobieren. Da scheinen aber einige interesante Sachen drin zu sein

Zusammenfassung

Ich werde an der Behebung von Fehlern und an Ergänzungen arbeiten. Laßt mir aber etwas Zeit damit. Denn wenn robi hier sagt, which ist schneller, dann bedeutet das für mich, zunächst eine Konsole zu öffnen und "man which" einzutippen. Aber ich bin ja lernfähig (auch wenn ich in diesem jahr noch das halbe Jahrhundert vollmachen werde). Und ich möchte auch verstehen, was ich da tue.

--Escho 21:06, 10. Jun. 2008 (CEST)


Änderungen Script-Version 0.5.3

  • Ein paar Schönheitsfehler korrigiert
  • Standard-PJX funktioniert jetzt auch. Dazu wurde die X.ini-Verwaltung geändert.

Die Ideen dazu kamen aus dem Patch von robi.

--Escho 21:06, 10. Jun. 2008 (CEST)


Mir ist gerade aufgefallen, daß das Patch von Robi mit der neuen Version nicht mehr funktionieren wird. --Escho 21:06, 10. Jun. 2008 (CEST)

das ist Klar, Patch geht nur auf die orginale Datei zu der er gehört, problemlos, wenn du die Änderungen und Ideen aus dem Patch verinnerlicht oder ins Script eingebaut hast, dann lösche den Patch hier einfach aus der Diskussion raus. Robi 16:21, 12. Jun. 2008 (CEST)
Entfernt und bei mir auf der Festplatte eine Heimat gegeben. Deine Änderungsvorschläge beim Multiplexen muß ich erst noch analysieren. Dazu muß ich mich aber erst einmal mit grep vertraut machen. Die Programmsuche mit find nervt übrigens tatsächlich. Das habe ich bei den PJX-Jonglagen gemerkt. which ist hierzu aber leider keine Alternative, da von ihm gerade PJX nicht gefunden wird. Da werde ich nochmal drüber nachdenken --Escho 20:38, 12. Jun. 2008 (CEST)

Im Patch vorgeschlagene Änderungen für das multiplexen

Lösungsvorschlag Robi

Das funktioniert leider nicht zuverlässig. Zum Beispiel bei einem vom Deluxe Music aufgenommenen Videoclip:

file film.mp2: MPEG ADTS, layer II, v1, 192 kBits, 48 kHz, Stereo

enthält keinen String "mpeg-1" und wird deshalb nicht erkannt.
Und ich hatte mich schon gefreut, denn die Lösung wäre genial.
--Escho 23:58, 12. Jun. 2008 (CEST)

hatte leider keine richtigen Sounddateien aus Videos zum testen auf den Rechner (bei meinen eigenen Videos ist es immer ac3 dafür aber oft mehrere) und hab einfach mal aus der /usr/share/misc/magic was herausgesucht, von dem ich dachte, das es funktionieren könnte. Wenn du mehrere verschiedene Dateien hast, dann kannst du ja versuchen irgendwie aus der Ausgabe von file herauszusuchen was typisch aber eindeutig ist. Kannst auch noch mehr Variable verwenden und alle hinten an den mplex Befehl angeben, musst eben nur zusehen, dass sie leer bleiben wenn nichts passendes da ist, Eine leere Variable wird dann innerhalb des mplex Kommandos einfach ignoriert. Wenn 2 oder 3 Variablen besetzt sind, dann werden eben 2 oder 3 Tonspuren eingemischt. Versuche es ruig mal mit dieser Methode weiter, if oder case an dieser Stelle wird bei vielen Möglichkeiten die es dort geben könnte, irgendwann den Code extrem aufblähen. Und da ist einiges an Möglichkeiten drin
  Mplex is a general-purpose audio/video multiplexer  for  MPEG-1/MPEG-2.
       It accepts one or more MPEG-1/2 video stream, MPEG layer I/II/III, DTS,
       AC3 and LPCM audio streams and multiplexes them into  a  combined  pro-
       gram/system  stream  according to the constraints specified.  Many dif-
       ferent types of output structure are supported along with  presets  for
       standard  VCD and SVCD streams.
Wenn file nicht die richtigen Antworten kennt, mit tcprobe -i datei oder mplayer -vo dummy -identify Datei solltest du eventuell noch genauer den Inhalt der Dateien ermitteln können.
Robi 02:32, 13. Jun. 2008 (CEST)
Hm, so viele Möglichkeiten gibt es eigentlich gar nicht, auf jeden Fall sind sie mir noch nicht über den Weg gelaufen.Schaun wir uns das mal an.
Ein oder mehrere ac3-Files: Ist noch nicht verwirklicht, würde aber nur einen neuen Fall im case bedeuten (und einen Umbau der Erkennungsroutine)
Ein oder mehrere mp2's: Funktioniert jetzt schon
Ein oder mehrere mp2's + ein oder mehrere ac3's: Funktionert jetzt auch schon.
Und was anderes außer film.mp2 oder film.ac3 habe ich aus PJX bisher noch nicht geliefert bekommen. so kompliziert wäre der Umbau also eigentlich gar nicht und es wäre alles abgedeckt, was mir im Moment bekannt ist. Ich muß aber erst mal die Variante mit den Variablen durchtesten, damit ich weiß, was mir besser gefällt.
--Escho 16:30, 13. Jun. 2008 (CEST)

Lösungsvorschlag Escho

What about this?

#!/bin/bash

tmp_pfad=/home/edgar/filme/dvd_tmp
mplex="/usr/bin/mplex"

mpeg1_video=
mpeg2_video=
mp2_audio=
ac3_audio=

mpeg1_video=`find ${tmp_pfad} | grep "m1v"`
mpeg2_video=`find ${tmp_pfad} | grep "m2v"`
mp2_audio=`find ${tmp_pfad} | grep "mp2"`
ac3_audio=`find ${tmp_pfad} | grep "ac3"`

${mplex} -v1 -f8 -o ${tmp_pfad}/film.mpg ${mpeg1_video} ${mpeg2_video} ${mp2_audio} ${ac3_audio}

kdialog --msgbox "ende"

Das ist mein Testscript. Ich denke, das sollte so funktionieren (alle Möglichkeiten hab ich noch nicht durch)
Und außerdem kann ich so aus den zwei Multiplex-Funktionen eine einzige machen.
--Escho 17:58, 13. Jun. 2008 (CEST)

Änderungen Script-Version 0.5.4

nach ausführlichen Tests habe ich meinen Lösungsvorschlag in das Script übernommen. Damit ergeben sich folgende Änderungen:

  • Nun werden auch alleinige AC3's multiplext
  • Die Funktion zum Multiplexen von mpeg-1 Videos wurde integriert
  • kleine Anpassung in der Funktion encode2mp2

--Escho 21:25, 13. Jun. 2008 (CEST)

Änderungen Script-Version 0.5.5

Umsetzung einer Anregung von Robi: Durch die Einschränkung der Suchpfade wurde die Programmerkennung wesentlich beschleunigt.
--Escho 17:16, 14. Jun. 2008 (CEST)

Änderungen Script-Version 0.5.6

  • Speicherplatz: Verwendung von "mv", am stelle von "cp", wo es möglich ist. Löschen nicht mehr benötigter Zwischenergebnisse.
  • Geschwindigkeit: Verwendung von "mv", am stelle von "cp".
  • Sicherheit: Der Löschbefehl "rm" wird nun nicht mehr allein mit Variablen eingesetzt.

--Escho 12:22, 15. Jun. 2008 (CEST)

Änderungen Script-Version 0.5.7

  • Funktion "clip_speichern ()": Funktioniert nun auch bei Dateinamen mit Leerzeichen
  • kleine Verbesserungen
  • Läuft nun auch unter OpenSuse 11.0 (KDE 4.1)

--Escho 22:25, 10. Jul. 2008 (CEST)

Änderungen Script-Version 0.5.8

  • In den Dialogen mit kdialog funktioniert der Abrechen-Knopf nun so, wie er soll

--Escho 08:31, 20. Jul. 2008 (UTC)

Änderungen Script-Version 0.6.0

  • Menuestruktur aufgeteilt in Hauptmenue und Untermenues
  • Installationsroutine auf das Basisverzeichnis ausgeweitet
  • Die Initialisierung in Funktionen übergeführt
  • Erkennung, ob Script zum ersten Mal läuft
  • Zusätzliche Ton-Optionen bei der Bearbeitung von Videoclips
  • Einige Funktionen zusammengefasst
  • Generelle Abschaltung der Fehlermeldungen rausgeschmissen
  • Überarbeitung des Codes und der Struktur

Wen es interessiert, dem wünsche ich viel Spass beim Ausprobieren! --Escho 19:28, 19. Aug. 2008 (UTC)

Änderungen Script-Version 0.7.0

Das Hauptmenue wurde um einen Aufgebenbereich "Verwaltung" erweitert. Hier lassen sich folgende Aktionen ausführen:

  • Löschen der Inhalte der temporären Arbeitsordner des Scripts
  • Leeren des Sicherungsverzeichnisses
  • Leeren des Verzeichnisses für die Screenshots
  • Ändern des Basisverzeichnisses
  • Deinstallation des Scripts

--Escho 19:12, 30. Aug. 2008 (UTC)

Änderungen Script-Version 0.7.1

  • Aufruf von oodraw-Schablonen für den DVD-Direktdruck

Änderungen Script-Version 0.7.2

  • Absicherung gegen unerwünschtes Löschen

Der String des Basisverzeichnisses wird überprüft, ob er einen Stern, eine Tilde oder ein Leerzeichen enthält, ebenso wird getestet, ob der String größer ist als Null Byte. In all diesen Fällen wird die Ausführung des Scriptes verweigert. Darüber hinaus wird durch den doppelten Bindestrich hinter den Befehlen rm verhindert, daß Eingaben als weitere Optionen für rm interpretiert werden können (Ein ungewollt interpretiertes rm -rf könnt sonst Übles bewirken).

Escho 16:31, 22. Dez. 2008 (UTC)

Änderungen Script-Version 0.7.3

  • Requantisierung ausgebaut.

Der Grund ist, daß tcrequant schon seit einigen Monaten keine akzeptablen Ergebnisse mehr bringt

Escho 16:35, 3. Jan. 2009 (UTC)

Änderungen Script-Version 0.8.0

  • Komplettumbau des Scriptes
  • Abgleich mit dem Arbeitsscript aus dem Artikel: Dvb script gui
  • Dadurch Vereinfachung und Verschlankung des Codes
  • Anpassung an KDE 4.2

Die Verzeichnisstruktur ist nun identisch mit der Struktur aus dem Arbeitsscript. Allein das Haupt- und das Ini-Verzeichnis wurden geändert, um Konflikte zu vermeiden.

--Escho 18:06, 29. Jan. 2009 (UTC)

Änderungen Script-Version 0.8.1

  • Neue Funktion: Abspielen einer Playlist von Videoclips

--Escho 10:46, 22. Feb. 2009 (UTC)

Änderungen Script-Version 0.8.2

  • Neue Funktion: Requantisieren des Videofiles, falls das Ergebnis zu groß für eine einzige DVD ist. Zum Requantifizieren wird requant_lxdvdrip aus dem Paket lxdvdrip verwendet. Genaueres dazu kann in einem Wikiartikel nachgelesen werden, der im Moment noch am Entstehen ist und natürlich in der Programmieranleitung hier im Wikibuch (wird in den nächsten Tagen ergänzt).

--Escho 19:46, 29. Apr. 2009 (UTC)

Änderungen Script-Version 0.9.0

  • Ersetze ~ durch $HOME
  • export VIDEO_FORMAT=PAL: Das explizite Festlegen auf PAL ist notwendig geworden, das dvdauthor ab Version 0.7.0 von packman das Videoformat nicht mehr als Standard voraussetzt.

--Escho 14:30, 9. Jan. 2011 (UTC)