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 …).
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.
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.
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
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
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.
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.
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
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.