H.264-MP4 encodieren mit Mencoder

  • Nachdem JoeB uns nun hinreichend oft in den Allerwertesten getreten hat (danke!), hab ich nun auch mal ausprobiert, wie man H.264-Video "richtig" produziert: Nämlich gleich als MPEG4-Datei, statt zwischendurch als AVI.

    Dafür kann man den "Mencoder" verwenden, der mit dem Mplayer parallel zu ffmpeg und ffdshow entwickelt wird (es basieren ja alle auf der "libavcodec"-Bibliothek), und das plattformübergreifend (also lauffähig auf verschiedenen Betriebssystemen). Das geht am leichtesten, wenn man ihn als Kommandozeilen-Programm entwickelt. Deshalb ist der Mencoder für sich wohl nicht jedermanns Sache.

    Für Windows gibt es nun von Doom9 die Benutzeroberfläche "MeGUI", meines Wissens nach sollte Version 0.168 wohl eine recht aktuelle sein. Sie erfordert das .NET-Framework (funktionierte bei mir auf Version 1.1) und ist im englischen doom9-Forum zu finden:

    http://forum.doom9.org/showthread.php?s=&threadid=87567

    (Leider, da bisher nicht konfigurierbar!) in das selbe Verzeichnis wie MeGUI gehören ebenfalls:

    - Mplayer/Mencoder, z.B. von celtic-druid's Mirror
    - mp4creator aus den mpeg4ip-Tools von RareWares.

    Und zum Erstellen von AAC-Tonspuren:

    - BeSweet (1.4 stable + 1.5 beta 29 - mit der bsn.dll 0.24, die sich direkt konfigurieren läßt)
    - die AAC-DLLs aus Nero (Programme\Gemeinsame Dateien\Ahead\AudioPlugins: aac.dll, aacenc32.dll - evtl. noch weitere?)

    Außerdem sollte AviSynth 2.5x installiert sein, und evtl. ein aktueller ffdshow, oder besser noch der Osmo4-Player, wenn man den Mplayer nicht so toll finden sollte.

    Die Bedienung der MeGUI ist etwas spröde, deshalb versuche ich hier mal so gut, wie ich kann, kurz zu erläutern, was man dabei beachten muss.

    Zunächst die AviSynth-Skriptdatei: Sie sollte YV12 als Videoformat ausgeben. In der GUI im "Input"-Register öffnen.

    Dann evtl. eine Tonspur: MeGUI kann bereits fertig encodierte MP4-Audio- oder AAC-Dateien an den Mux-Schritt übergeben, oder startet bei anderen Dateitypen (z.B. AC3 oder MP2) BeSweet für die Umwandlung.

    { - Unfug mit MP4-Audio entfernt - }

    Nach dem Festlegen des Encodingformates (Codec: AVC), des Dateityps (File Type: MP4) und des Dateinamens für die Ausgabe-Datei, folgt jetzt mehr oder weniger Routine:

    - Register "Video": Mode = "Automated 2-pass", Bitrate, sonstige Optionen...
    - Register "Input": Checkbox "and start" anhaken, Button "Queue" klicken

    für die schnelle Methode. Wer lieber spielen will, muss mehr tun:

    - Register "Video": Mode = "3pass, 1st pass", Quantizer, sonstige Optionen...
    - Register "Input": Checkbox "and start" freilassen, Button "Queue" klicken
    - Register "Video": Mode = "3pass, 2nd pass", Bitrate, sonstige Optionen...
    - Register "Input": Checkbox "and start" freilassen, Button "Queue" klicken
    - Register "Video": Mode = "3pass, 3rd pass", Bitrate, sonstige Optionen...
    - Register "Input": Checkbox "and start" freilassen, Button "Queue" klicken
    - Register "Queue": Wenn hier alles stimmt (letzter Punkt des Jobs hat den Mode "mux"): "Start" klicken

    Bei mir lief nach ein paar Experimenten dann auch tatsächlich alles durch - bis zum Mux. Hier hing das Programm dann ziemlich lange - was am mp4creator liegen soll. Ich dachte zunächst an einen Absturz, bis mich Doom9 mit der Nase auf die ReadMe im MeGUI-Archiv stieß... :redface:

    Meine Vermutung geht dahin, dass die Konsolen-Umleitung der .NET-GUI hier Schwierigkeiten hat, und versuchte, aus den Kommandozeilen der Log-Datei die wichtigsten Informationen herauszuziehen. Es gelang mir schließlich, deren Arbeitsweise nachzuvollziehen. Das Ergebnis ist eine Batchdatei (als "Alternative"), die unter Windows 2000 bisher ordentlich funktioniert, und am Ende die MP4-Datei auch noch etwas optimiert.

    Es ist möglich, dass man unter Windows XP die Programmstarts in dieser Batchdatei überarbeiten muss - ich habe mal gelesen, dass Windows XP die Programme einfach alle startet und nicht auf deren Ende wartet. Dann müsste man sie, um das zu vermeiden, mit "START /WAIT" aufrufen. Aber ich besitze Windows XP nicht, kann das also nicht testen.

    Auf jeden Fall muss vor dem ersten Start die Position der verwendeten Programme eingetragen werden - die ist in meiner Batchdatei nämlich konfigurierbar (bei der MeGUI habe ich das bisher nicht gefunden).

    Die Bedienung erklärt sich nach dem Start der Batch-Datei ohne Parameter. Bitte nicht aus dem Explorer starten, sondern aus einem DOS-Fenster - es wäre ja sonst auch schwierig, im Explorer die erforderlichen 5 Parameter anzugeben...

    { Batch-Datei aktualisiert }

  • Zitat


    - BeSweet (1.4 stable + 1.5 beta 29 - mit der bsn.dll 0.24, die sich direkt konfigurieren läßt)
    - die AAC-DLLs aus Nero (Programme\Gemeinsame Dateien\Ahead\AudioPlugins: aac.dll, aacenc32.dll - evtl. noch weitere?)


    Aac.dll, aacenc32.dll, NeroIPP.dll, wav.dll
    Aber ich glaube, BeSweet kann mit Nero Encoder ab Version 3 sowieso nichts mehr anfangen.

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Die wav.dll wird bei mir definitiv nicht benötigt. Die NeroIPP.dll anscheinend auch nicht. Und Doom9 hat in seiner ReadMe auch nur die beiden (aac*.dll) erwähnt.

    Meine Version schreibt in die erzeugte MP4-Audiodatei "Metadata Tool: Nero AAC Codec 2.9.9.999".

  • Zitat

    Die wav.dll wird bei mir definitiv nicht benötigt. Die NeroIPP.dll anscheinend auch nicht. Und Doom9 hat in seiner ReadMe auch nur die beiden (aac*.dll) erwähnt.


    Hm, es scheint wohl so, als waere die wav.dll wirklich nicht noetig. Die NeroIPP.dll wird aber wohl gebraucht, nur suchen sich die andern zwei dlls diese anhand einer Pfadangabe in der Registry...


    Zitat

    Meine Version schreibt in die erzeugte MP4-Audiodatei "Metadata Tool: Nero AAC Codec 2.9.9.999".


    Deine Version ist veraltet :D


    [EDIT]
    Ich sehe grade, wenn man nur Nero Vision installiert, ist offenbar keine Aac.dll dabei - wird wohl daran liegen, das BeSweet bei mir nicht mehr funktioniert. Aber die aacenc32.dll ist definitiv Version 3.0.0.5 und bei mit 'Nero Frontends' erstellten Dateien, wird das auch mit ins MP4 geschrieben.

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Geht, hab mir grade noch mal die aktuellste aacenc32.dll + aac.dll beschafft und noch mal getestet...

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Bleibt nurnoch die Möglichkeit zu erwähnen, dass man mit MeGUI auch einen raw stream erzeugen kann den man dann nachher mit allen anderen streams wunderbar zusammenmuxen kann. Auch die Erzeugung eines raw-streams hat den Vorteil, dass man sich avi hacks etc. ganz einfach ersparen kann. Ist natürlich nur dann praktisch, wenn man sowieso einen zusätzlichen muxer bemühen möchte um z.Bsp. Untertitel, Kapitel und wer weis was noch kommt muxen möchte.

    cu

    Joe
    __________________
    Freedom ist just another word for nothing left to loose.

  • MeGUI übernimmt das Multiplexen automatisch, wenn man als Zielformat "MP4" einstellt. Aber ein Raw-Stream ("raw" = "roh": reine Daten, ohne Header oder ähnliches Beiwerk) wird immer zuerst erzeugt. Bei H.264/AVC sind das Dateien mit der Endung *.264.
    __

    Leider wurde die manuelle Audio-Konvertierung durcheinander gebracht, die ist in Version 0.169 defekt. Doom9 hat aber einen Fix für "heute Abend" versprochen. Wer hat ihn zuerst?! ;)

  • 10 Movies... mit meiner alten Krücke wohl kaum. ;) -- Aber ein paar Trailer bestimmt. Vor allem manuell Audio + 3-pass Video.
    __

    [schild]
    Keine Atempause
    Geschichte
    wird gemacht
    Es geht voran

    [/schild]

    Es hat sich gelohnt, sich noch mal alle verfügbaren Dokumentationen zu mp4creator durchzulesen: Einige Optionen sind jetzt klarer. Zum Beispiel scheint mir die Optimierung am Ende ziemlich wichtig zu sein, das Hinting dagegen weniger (ein Glück: die Video-Stream-Nummer abzufragen wäre automatisch etwas nervig).

    Und okay: 3-pass ist nicht nötig, die Zielgröße wird nach dem zweiten Durchlauf schon gut genug getroffen, die Änderungen in der Quantisierungs-Statistik sind minimal bis vernachlässigbar.

  • Ich schnall das nicht mit den credits. Was passiert eigentlich, wenn ich ein Avisynth-Skript lade und beim aufpoppen des Fensters den Abspann markiere und das Fenster dann schliesse? Macht MeGUI dann irgendwas? (Ich habe immer nur Videoencoding ohne Audio und immer nur RAW).

    cu

    Joe
    __________________
    Freedom ist just another word for nothing left to loose.

  • Zweck des Ganzen wäre vergleichweise wie bei GordianKnot mit DivX 5:

    - Vom Anfang bis ein Bild vor dem gewählten wird der Film mit optimaler Bitrate (n-pass) encodiert.

    - Vom gewählten Bild bis zum Ende wird der Abspann mit geringerer Bitrate encodiert (z.B. fester hoher QF, 1 pass).

    Dann spart man dadurch am Abspann ein klein wenig Bitrate, die dem Film noch zugute kommt.

    Zum Schluss werden Film und Abspann aneinander gefügt, bevor die Tonspur multiplext wird.

  • Version 1802 ist draussen und behebt einen bug mit den automatischen settings für die Credits. Funktioniert jetzt bei mir einwandfrei - vorher stoppte das tool mit Fehler beim Hauptfilm. Macht Spass!!!

    cu

    Joe
    __________________
    Freedom ist just another word for nothing left to loose.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!