1. Cookies optimieren die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklärst Du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen
    Information ausblenden
  2. Willkommen im Forum von DIGITAL FERNSEHEN - dem führenden Portal für digitales Fernsehen, Medien und Entertainment. Wenn du hier neu bist, schau dich ruhig etwas um und melde dich an, um am Forengeschehen teilnehmen zu können.
    Information ausblenden

Automatisiertes MPEG-2-DivX-Encoding (mencoder) - Wer kann es noch verbessern?

Dieses Thema im Forum "Heimkino mit dem PC" wurde erstellt von Gummibaer, 19. November 2003.

  1. Gummibaer

    Gummibaer Platin Member

    Registriert seit:
    10. März 2003
    Beiträge:
    2.375
    Anzeige
    EDIT1: Kleine Korrektur an der Parameterzeile für Audio, wer's schon kopiert hat bitte nochmal kopieren, es gibt sonst utopisch hohe mp3-Bitraten.
    EDIT2: Die parameter für die Videokompression (insb. Post-Processing-Filter) wurden deutlich verbessert - bitte ggf. nochmal neu mit diesem Skript codieren.


    Hallo!

    Habe mir heute ein kleines Batch-Skript gebastelt, das den mencoder aufruft: (Es ist natürlich ein Windows-NT-System (Win NT 4.0, Win2000, WinXP, Longhorn) nötig, DOS kann diese Skripte so nicht ausführen, könnte man ggf. anpassen - nur wozu?)
    Das Skript benötigt als ersten Parameter die Bitrate, als zweiten den Dateinamen. Ich habe es mit Parameter 900 (für die Bitrate) in die Toolbar vom Total commander eingebaut, so dass ich nur eine Datei drauffallen lassen und warten muß.

    Es kann immer nur eine Datei gleichzeitig codiert werden, da mencoder in seinem eigenen Verzeichnis eine Datei "frameno.avi" anlegt, die es für die gerade in Bearbeitung befindliche Videodatei braucht.



    Ich würde nun noch gerne ergänzen, dass automatisch an jedem Rand immer z.B. 16 Pixel abgeschnitten werden. Weiß jemand, wie man das anstellen kann?

    Eine Autcrop-Funktion, der man dann noch sagen kann, dass sie 5 Pixel zuviel abschneiden soll wäre auch nicht schlecht.


    mencoder hat dafür schon den Parameter -cropdetect, aber das Ergebnis muß man dann wieder von Hand in die Befehlszeile einbauen entt&aum

    Vielleicht gibt's ja hier einen mplayer/mencoder-Experten...


    Ausserdem kann man sicher noch etwas an der Qualität feilen - die ist aber eigentlich schon ganz gut und das 3pass-Encoding dauert auf meinem Duron 1300 inkl. 3fachem (wg. 3pass) MPEG2-Decoding, Deinterlacing und Scaling auch nur ca. 20% länger als die Spieldauer, z.B. ein 352+576-Clip mit 20 Sekunden Dauer braucht 24 Sekunden zum konvertieren.
    Einer mit 9Min40 und 544x576 hat 12 Minuten gebraucht.


    www.mplayerhq.hu

    http://linux.oreillynet.com/pub/a/linux/2003/04/06/mplayer.html

    http://www.mplayerhq.hu/homepage/design4/projects.html

    Kompiliertes Windows-Binary:
    http://oss.netfarm.it/mplayer-win32.php
    (.bz2 kann man mit einem Total Commander Plugin auspacken, ansonsten gibt's ja auch zwei .zip-Archive dort)


    Ach ja, noch was: Kann man irgendwie in die Datei, die bei so einer Befehlszeile:
    dir /O /N /B /A-D > "Liste.bat"
    erzeugt wird noch pro Zeile etwas hinzufügen?

    Dann könnte ich nämlich die Zeichenfolge "Encode 900 " an den Anfang jeder Zeile hängen und die entstandene Datei könnte dann einfach gestartet werden und es würden ALLE Dateien eines Verzeicnisses codiert.

    Wenn man verhindern will, dass evtl. schon konvertierte Avis nochmal konvertiert werden, kann man auch die Dateitypen beschränken, z.B. so:
    dir *.mpg *.mov *.rm *.asf *.wmv *.mpeg /O /N /B /A-D > "List.bat"

    Der Befehl
    recode ibmpc..latin1/cl "List.bat"

    Sorgt dann noch dafür, dass die von DOS verhunzten Umlaute wieder korrekt sind. Das Programm recode ist open source und kann irgendwo im Web gefunden werden.

    <small>[ 21. November 2003, 01:53: Beitrag editiert von: Gummibaer ]</small>
     
  2. Gummibaer

    Gummibaer Platin Member

    Registriert seit:
    10. März 2003
    Beiträge:
    2.375
    Habe jetzt selbst eine Lösung gefunden:

    Dieses Skript konvertiert alle Dateien eines Verzeichnisses:

    WICHTIG: Es wird das obige Encode.cmd-Skript ebenfalls benötigt, denn dieses Skript hier baut darauf auf, indem es das obige für jede Datei automatisch ausführt!

    Und wenn man es mit Idle-Priorität (oder einer anderen) starten möchte, dann braucht man noch ein drittes Skript: (Idle ist empfehlenswert, da dann alle anderen Progremme nicht merklich gebremst werden und das Konvertieren nebenbei laufen kann. Wenn keine Anderen Programme Rechenzeit fressen, dann wird das Konvertieren auch nur minimal langsamer. Und ja: Es MUS ein drittes Skript sein, wenn man den START-Befehl in der Schleife verwendet, passieren schwachsinnige Dinge!

    Wie gesagt: wenn mir jetzt noch einer sagt, wie ich mencoder dazu bringe, an jedem Rad n Pixel (z.B. n=16) abzuschneiden oder noch besser (um auch Breitwandstreifen automatisch loszuwerden), wie man die per -cropdetect ermittelten Ränder + 5 Pixel oder so automatisch an mencoder übergeben kann, dann wäre es perfekt:

    DVB-MPEG2-Datei aufnehmen, Skript starten, fertig.

    Oder aber: viele DVB-MPEG2-Dateien aufnehmen, Skript starten, fertig.

    Für Dateien mit AC3-Ton müßte man das ganze allerdings noch anpassen. Dies könnte ja ggf. sogar automatisiert werden, so dass einem trotz vollautomatischer Konvertierung (bis auf ein wenig Bildqualität) nichts verloren geht.
    Ich denke mit 480x384 bei 900 kbps kann man sehr gut leben.
    Was allerdings bei 16:9-Material hinten rauskommt habe ich noch nicht getestet - ich vermute Eierköpfe... boah!
    Man könnte das Umgehen, indem man das Videomaterial nicht neu skaliert, sondern so nimmt, wie es ist. mencoder kann das Seitenverhältnis auch in MPEG4-Dateien speichern und mplayer kann es (als einziger Player) auch auswerten.

    <small>[ 21. November 2003, 01:54: Beitrag editiert von: Gummibaer ]</small>
     
  3. Gag Halfrunt

    Gag Halfrunt Lexikon

    Registriert seit:
    26. November 2001
    Beiträge:
    22.650
    Ort:
    Geldspeicherstadt
    Hi,

    ich hab das nur überflogen: Wie stabil ist das Teil?

    Ich hab nämlich das Problem, dass mir bisher jeder DivX-Encoder abgestürzt ist, wenn ich bestimmte MPEG-Streams codieren wollte, die ich über meine D-Box aufgenommen hab.

    Deshalb suche ich halbwegs verzweifelt nach einer "rock solid"-Lösung, die ohne viel Konfigurationsaufwand (und da ist ein festes Skript ja schon mal nicht schlecht!) MPEG2 nach MPEG4/DivX wandelt.

    Gag

    <small>[ 20. November 2003, 11:16: Beitrag editiert von: Gag Halfrunt ]</small>
     
  4. uli12us

    uli12us Platin Member

    Registriert seit:
    25. August 2003
    Beiträge:
    2.741
    Ort:
    München
    Ich stelle mir bei euern ganzen Umwandlungsorgien immer noch die Frage wasdas ganze eigentlich für einen Sinn hat. Gut divx ist kleiner als Mpeg2 aber doch auch schlechter in der Qualitätund zudem gibt es nur wenige DVD-Player die dieses Format überhaupt lesen können. Das gilt auch für die Dinger auf dem PC. Wenn ich die Auswahl habe einen Filmclip in avi oder mpeg zu haben nehme ich immer mpeg das läuft auf jedem Player. Divx kann ich mindestens 2/3 davon mit keinem Codec lesen. Zudem kann ich in eine HJ gesplittete Datei schon mal reinschauen ob sich der Download überhaupt lohnt während mit avi ohne komplette Datei nichts zu sehen ist.

    Gruss Uli
     
  5. whitman

    whitman Wasserfall

    Registriert seit:
    21. Mai 2003
    Beiträge:
    8.478
    Ort:
    München
    Es kommt immer ganz drauf an, mit welcher Bitrate man encodiert. Jeder neue Codec, soll leistungsfähriger (als besser kompremieren) als der letzte. Das bei Divx oft nur Film in VHS Qulität auftauchen liegt oft am Ausgangsmaterial (VCD) oder der gewünschten Größe (alles auch ein CD mit AC3). Wenn man mit der entsprechenden Qulität encodiert, dann ist es kleiner und mit entsprechender Qulität.

    whitman
     
  6. Gag Halfrunt

    Gag Halfrunt Lexikon

    Registriert seit:
    26. November 2001
    Beiträge:
    22.650
    Ort:
    Geldspeicherstadt
    @uli: MPEG4 hat einen effizienteren Kompressionsalgorithmus als MPEG2, weshalb Du bei niedrigerer Datenrate dieselbe Qualität erreichen kannst. Ein Grund ist z.B. die Wavelet-Kompression der Key-Frames statt JPEG.

    Ich möchte MPEG4 bzw. DivX eigentlich nur für Serien und andere Sendungen haben, bei denen es mir nicht sooo auf die Qualität ankommt. Die möchte ich gerne auf eine (!) CD schreiben. Allerdings ist MPEG2 bei z.B. einer 90 Minuten dauernden Tatort-Folge nicht mehr so prickelnd. Mit MPEG4/DivX hingegen ist die Qualität deutlich besser.

    Zur Wiedergabe habe ich einen MPC im Wohnzimmer mit Hardware-Decoderkarte stehen, die selbstverständlich auch MPEG4 decodieren kann. Von daher bietet sich das förmlich an.

    Aber normalerweise brenne ich meine Filme unverändert auf DVD. Für andere Sendungen, die ich nur mal aufheben will, ist mir das aber zu teuer. Da reicht ein CD-Rohling aus.

    Gag
     
  7. Gummibaer

    Gummibaer Platin Member

    Registriert seit:
    10. März 2003
    Beiträge:
    2.375
    Also bisher hat es alles gefressen. Der mplayer zeigt zwar bei den Dateien von ProgDVB, die auch nur so vor Fehlern strotzen eine falsche Gesamtzeit und aktuelle Position an, spielt sie aber ab. Nach dem Konvertieren mit mencoder stimmen die Zeiten aber. Ab und zu motzt er über einige Frames, stört aber nicht und macht auch keine Probleme. Bisherige Abstürze: 0.
     
  8. Gummibaer

    Gummibaer Platin Member

    Registriert seit:
    10. März 2003
    Beiträge:
    2.375
    Man kann auch sehr gut mit einen mit Festplatten Vollgestopften PC als Video-Daten-Lieferant am LAN leben oder mit einem PC, der Videos von CD / DVD spielt.

    Was kannst Du denn nicht abspielen? mplayer frißt so ziemlich ALLES!

    Auch dass man die komplette Datei benötigt ist unfug. mplayer kann mit einer bestimmten option den Index wiederherstellen, man kann mit mencoder solche avis sogar dauerhaft fixen.

    Da dies eigentlich nur bei downgeloadeten Dateien Auftritt: da ist die DivX-Version i.d.R die mit der besseren Qualität. Natürlich kann DivX einem DVB-Stream oder VOB-Dateien nicht annähernd das Wasser reichen.


    Der mencoder kann sogar noch viel mehr, z.B. Einzelbiler, PNG-Anims (oder mit PlugIn auch GIF-Anims) aus Videos erzeugen. Oder Einzelbilder zu einem Video machen. Oder große Bilder erstellen, die die einzelnen Frames als kleine Bilder enthalten.

    Die Ungarn haben da ein echtes Meisterstück abgeliefert!

    Was noch fehlt ist codieren nach MPEG4-H.264/AVC (abspielen geht schon), aber das ist auch nur noch eine Frage der Zeit.

    Auch der mplayer ist mein neuer Lieblingsplayer. man muß ihn für gute Ergebnisse allerdings richtig konfigurieren, ich empfehle (unter windows) dies ind die Config zu schreiben:
    Dann verhält er sich fast wie der MediaPlayer, nur dass man ihn besser per Tastatur bedienen kann und er ERHEBLICH schneller in DivX oder MPEG2 (eigentlich in allen) Dateien spulen kann und ein OSD bietet (1x öfter o drücken, als man vermutet, wenn man es wieder ausschaltet, da sonst auch der Progressbar fürs Spulen abgeschaltet ist)
    Schade, dass beim Spulen die Zeit nicht automatisch mit eingeblendet wird.

    In der input_conf sollte man vielleicht noch die +/- Tasten mit der Lautstärkeregelung statt dem Zeitversatz belegen.
    Wieso wird die genialste Software eigentlich immer mit unbrauchbaren Voreinstellungen ausgeliefert? breites_

    <small>[ 20. November 2003, 18:31: Beitrag editiert von: Gummibaer ]</small>
     
  9. Gummibaer

    Gummibaer Platin Member

    Registriert seit:
    10. März 2003
    Beiträge:
    2.375
    Weiß denn niemand, wie man das Abschneiden der Ränder und evtl. einstelen einer anderen Zielauflösung bei 16:9-Material auch noch automatisieren kann?

    Es gibt da wohl eine Möglichkeit, mit Hilfe eines Perl-Scripts und der "cropdetect"-Option vom mencoder. Aber ein perl-Skript unter Windows? Geht wohl irgendwie mit Cygwin oder so, aber vielleicht gibt's eine Lösung, die eleganter/einfacher ist (unter Linux ist Perl sicher die eleganteste)

    Ich würde wie gesagt noch gerne folgendes ergänzen:
    Richtig cool wäre ja noch, wenn automatisch so ein schwarzer Bereich, auch dann als überflüssig erkannt würde, wenn ab und zu mit einem "Pling" (oder auch ohne Pling) reingeschobene Texte dort auftauchen und wenn, falls diese ins Nutzbild reinragen, vom Nutzbild auch noch etwas mehr abgeschnitten würde, so dass diese Ärgernisse, z.B. bei Pro7, automatisch und restlos entfernt würden l&auml;c

    Automatische Werbungserkennung wäre auch noch eine feine Ergänzung (oder wenigstens manuell). Der mplayer kann Edit Decision Lists verarbeiten, der mencoder leider dummerweise nicht (verstehe ich nicht).

    Es wären also
    -mplayer dahingehend zu patchen, dass man besser Edit Decision Lists (EDL) erstellen kann, denn bisher geht das nur sehr rudimentär

    -mencoder so zu patchen, dass er die EDL auch verarbeiten kann

    Stelle ich mir beides nicht sooo schwierig vor. Ein sicheres, automatisches Erkennunen von werbung wäre aber zugegebenermaßen cooler breites_

    <small>[ 20. November 2003, 18:10: Beitrag editiert von: Gummibaer ]</small>
     
  10. Gag Halfrunt

    Gag Halfrunt Lexikon

    Registriert seit:
    26. November 2001
    Beiträge:
    22.650
    Ort:
    Geldspeicherstadt
    Aaahhhhhhhgggggllll!!!!!!!!

    Diese Linux-Schwachmaten! Da wird man ja wahnsinnig, wenn man das zum Laufen bekommen will: Tausend Archive, Konfigurationsfiles, Verzeichnisse, usw.

    Kannst Du mir mal einen Tipp geben, was ich von diesem ganzen kruden Kram alles brauche?

    Gag
     

Diese Seite empfehlen