7.7. MEncoder benutzen, um QuickTime-kompatible Dateien zu erstellen

7.7.1. Warum sollte jemand QuickTime-kompatible Dateien erstellen wollen?

Es gibt mehrere Gründe, warum das Erstellen von QuickTime-kompatiblen Dateien wünschenswert sein kann.

  • Du willst, dass jeder Computeranalphabet deine Encodierung auf jeder größeren Plattform (Windows, Mac OS X, Unices …) anschauen kann.

  • QuickTime kann von mehr Features der Hardware- und Softwarebeschleunigung von Max OS X gebrauch machen als plattformunabhängige Player wie MPlayer oder VLC. Das heißt, dass deine Encodierungen eine bessere Chance haben, auf älteren G4-Machinen flüssig abgespielt werden zu können.

  • QuickTime 7 unterstützt den Next-Generation-Codec H.264, der deutlich bessere Bildqualität erreicht als vorige Codecgenerationen (MPEG-2, MPEG-4 …).

7.7.2. Beschränkungen von QuickTime 7

QuickTime 7 unterstützt H.264 Video und AAC Audio, aber es unterstützt diese nicht gemuxt im AVI-Containerformat. Du kannst jedoch MEncoder verwenden, um Video und Audio zu encodieren, und dann ein separates Programm wie mp4creator (Teil des MPEG4IP-Pakets) verwenden, um Video- und Tonspuren in einen MP4-Container zu muxen.

QuickTimes Unterstützung für H.264 ist begrenzt, daher wirst du ein paar fortgeschrittene Features weglassen müssen. Wenn du dein Video mit Features encodierst, die QuickTime 7 nicht unterstützt, werden dir QuickTime-basierte Player ein ziemlich weißes Bild zeigen an Stelle des erwarteten Videos.

  • B-Frames: QuickTime 7 unterstützt maximal einen B-Frame, z.B. -x264encopts bframes=1. Dies bedeutet, dass b_pyramid and weight_b keine Auswirkungen haben werden, da sie bframes größer als 1 erwarten.

  • Macroblöcke: QuickTime 7 unterstützt keine 8x8 DCT Macroblöcke. Diese Option (8x8dct) ist per Voreinstellung aus, stelle daher sicher, dass du sie nicht explizit aktiviert. Dies bedeutet auch, dass die Option i8x8 keine Auswirkungen haben wird, denn sie benötigt 8x8dct.

  • Seitenverhältnis: QuickTime 7 unterstützt Informationen über SAR (sample aspect ratio) nicht; es nimmt SAR=1 an. Lies den Abschnitt über Skalierung für eine Umgehung dieses Problems.

7.7.3. Beschneidung der Ränder (Cropping)

Angenommen, du willst deine nagelneu gekaufte Kopie von "Chroniken von Narnia" rippen. Deine DVD ist Region 1, d.h. sie ist in NTSC. Das weiter unten stehende Beispiel kann man auch auf PAL anwenden, nur dass du dann -ofps 24000/1001 weglassen und etwas andere Maße für crop und scale verwenden musst.

Nach dem Ausführen von mplayer dvd://1 folgst du den Anweisungen, die detailliert im Abschnitt Wie mit telecine und interlacing in NTSC-DVDs umgehen beschrieben sind, und stellst fest, dass es sich um 24000/1001 fps progressives Video handelt. Das vereinfacht das Vorgehen etwas, da du keinen inverse telecine Filter wie pullup oder einen Deinterlacing-Filter wie yadif anwenden musst.

Als nächstes musst du die schwarzen Streifen oben und unten vom Video entfernen wie in vorigem Abschnitt beschrieben.

7.7.4. Skalierung

Der nächste Schritt ist wirklich herzzerreißend. QuickTime 7 unterstützt keine MPEG-4-Videos mit einer sample aspect ratio ungleich 1, daher wirst du das Video auf quadratische Pixel hochskalieren (was eine Menge Platz verschwendet) oder herunterskalieren (was ein paar Details der Quelle verliert) müssen. Beides ist höchst ineffizient, jedoch einfach nicht zu vermeiden, wenn dein Video von QuickTime 7 abspielbar sein soll. MEncoder kann die passende Hoch- oder Herunterskalierung durchführen bei Angabe von -vf scale=-10:-1 oder -vf scale=-1:-10 respektive. Dies wird dein Video auf die für die geschnittene Höhe korrekte Breite schneiden, gerundet auf das nächste Vielfache von 16 für optimale Kompression. Beachte, dass wenn du schneidest, solltest du zuerst schneiden und erst dann skalieren:

-vf crop=720:352:0:62,scale=-10:-1

7.7.5. A/V-Synchronisation

Weil du in einen anderen Container muxen wirst, solltest du immer die Option harddup verwenden, um sicherzustellen, dass doppelte Frames in der Videoausgabe tatsächlich dupliziert werden. Ohne diese Option wird MEncoder einfach eine Markierung im Videostream machen, dass ein doppelter Frame vorkommt, und sich darauf verlassen, dass die Software dafür sorgt, dass derselbe Frame zweimal angezeigt wird. Leider überlebt diese "weiche Duplikation" das Remuxen nicht, daher wird der Ton langsam Synchronisation zum Video verlieren.

Die endgültige Filterkette sieht so aus:

-vf crop=720:352:0:62,scale=-10:-1,harddup

7.7.6. Bitrate

Wie immer geht es bei der Wahl der Bitrate sowohl um technische Gegebenheiten der Quelle, wie hier erklärt wird, als auch um persönlichen Geschmack. Dieser Film enthält durchaus einige Actionszenen und viele Details, aber H.264-Video sieht gut aus auch bei viel geringeren Bitraten als XviD oder andere MPEG-4-Codecs. Nach vielem Experimentieren hat der Autor dieser Anleitung beschlossen, den Film bei 900kbps zu encodieren, und dachte, er sehe ziemlich gut aus. Du kannst die Bitrate verringern, um Platz zu sparen, oder erhöhen, um die Qualität zu verbessern.

7.7.7. Encoding-Beispiel

Du bist jetzt soweit, das Video zu encodieren. Da du auf Qualität Wert legst, wirst du natürlich eine Encodierung mit zwei Durchläufen machen. Um etwas Encodierzeit zu sparen, kannst du die Option turbo beim ersten Durchlauf angeben; dies verringert subq und frameref auf 1. Um etwas Platz zu sparen, kannst du die Option ss verwenden, um die ersten Sekunden des Videos zu überspringen. (Ich fand, dass dieser bestimmte Film 32 Sekunden Vorspann hat.) bframes kann 0 oder 1 sein. Die anderen Optionen werden in Encodierung mit dem x264-Codec und der Manpage beschrieben.

mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \
-x264encopts pass=1:turbo:bitrate=900:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001

Wenn du einen Rechner mit mehreren Prozessoren hast, nutze die Chance, den Encodierungsvorgang dramatisch zu beschleunigen, indem du x264's Multithreading-Modus verwendest, indem du die Option threads=auto der x264encopts-Kommandozeile hinzufügst.

Der zweite Durchlauf ist derselbe, außer dass du die Ausgabedatei angibst und pass=2 setzt.

mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \
-x264encopts pass=2:turbo:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001

Das resultierende AVI sollte in MPlayer perfekt abspielbar sein, aber natürlich kann QuickTime es nicht abspielen. Denn es unterstützt H264 in AVI nicht. Der nächste Schritt ist also, das Video in einen MP4-Container zu muxen.

7.7.8. Remuxen zu MP4

Es gibt mehrere Möglichkeiten, AVI-Dateien nach MP4 zu muxen. Du kannst mp4creator verwenden, welches Teil des MPEG4IP-Pakets ist.

Demuxe das AVI MPlayer zuerst in separate Audio- und Videostreams.

mplayer narnia.avi -dumpaudio -dumpfile narnia.aac
mplayer narnia.avi -dumpvideo -dumpfile narnia.h264

Die Dateinamen sind wichtig; mp4creator verlangt, dass AAC-Audiostreams .aac und H.264-Videostreams .h264 heißen.

Benutze nun mp4creator, um aus Audio- und Videostreams eine MP4-Datei zu erzeugen.

mp4creator -create=narnia.aac narnia.mp4
mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4

Anders als bei der Encodierung musst du die Framerate als Dezimalzahl (23.976) und nicht als Bruch (24000/1001) angeben.

Diese Datei narnia.mp4 sollte nun mit jeder QuickTime 7 Anwendung wie dem QuickTime Player oder iTunes abspielbar sein. Wenn du vorhast, das Video mit einem QuickTime-Plugin im Browser anzuschauen, solltest du den Film außerdem "hinten", so dass das QuickTime-Plugin während des Downloads die Wiedergabe starten kann. mp4creator kann diese Art Tracks erstellen:

mp4creator -hint=1 narnia.mp4
mp4creator -hint=2 narnia.mp4
mp4creator -optimize narnia.mp4

Du kannst das Ergebnis überprüfen, um sicherzustellen, dass die Hint-Tracks erfolgreich erstellt wurden:

mp4creator -list narnia.mp4

Du solltest eine Auflistung der Tracks sehen: 1 Audio-, 1 Video- und 2 Hint-Tracks.

Track   Type    Info
1       audio   MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz
2       video   H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
3       hint    Payload mpeg4-generic for track 1
4       hint    Payload H264 for track 2

7.7.9. Metadata-Tags hinzufügen

Wenn du deinem Video Tags hinzufügen möchtest, die in iTunes angezeigt werden, kannst du dazu AtomicParsley verwenden.

AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite

Die Option --metaEnema entfernt jegliche existierenden Metadaten (mp4creator fügt seinen Namen im Tag "encoding tool" hinzu), und --freefree macht den frei gewordenen Platz geltend. Die Option --stik setzt den Videotyp (wie z.B. Film und Serie), den iTunes verwendet, um verwandte Videodateien zu gruppieren. Die Option --overWrite überschreibt die ursprüngliche Datei. Ohne sie erstellt AtomicParsley eine automatisch benannte Datei im selben Verzeichnis und lässt die Originaldatei unberührt.