Diskussion:Dvb wiki script/Script: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(Programmerkennung beschleunigt)
(Optimierungen des Codes)
Zeile 159: Zeile 159:
 
Umsetzung einer Anregung von Robi: Durch die Einschränkung der Suchpfade wurde die Programmerkennung wesentlich beschleunigt.<br>
 
Umsetzung einer Anregung von Robi: Durch die Einschränkung der Suchpfade wurde die Programmerkennung wesentlich beschleunigt.<br>
 
--[[Benutzer:Escho|Escho]] 17:16, 14. Jun. 2008 (CEST)
 
--[[Benutzer:Escho|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.<br>
 +
--[[Benutzer:Escho|Escho]] 12:22, 15. Jun. 2008 (CEST)

Version vom 15. Juni 2008, 10:22 Uhr

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)