Als Voraussetzung braucht ihr unter Linux zunächst das mplayer- und mencoder-Paket, letzteres ist manchmal im mplayer-Paket enthalten. Auf Ubuntu heißen die Pakete einfach "mplayer" und "mencoder". Außerdem braucht ihr den mp4creator, der manchmal, aber leider nicht auf Ubuntu, im Paket "mpeg4ip" enthalten ist.
Selber bauen unter Ubuntu geht mit kleinen Hürden auch: als erstes die Quellen der Version 1.5.0.1 hier herunterladen. Die Software lässt sich theoretisch mit dem üblichen "configure; make; sudo make install" installieren. Das hat bei mir mit Ubuntu 9.04 aber nicht ganz geklappt. Auch wenn ihr alle Entwicklerbibliotheken installiert habt, dann wird das "make" nach einiger Zeit mit einem Fehler abgebrochen. Da ihr aber nur "mp4creator" und nicht die ganzen anderen Bibliotheken und Tools aus mpeg4ip braucht, könnt ihr den "mp4creator" auf Ubuntu auch einzeln bauen. Zuerst das Archiv entpacken, dann:
$ cd mpeg4ip-1.5.0.1
$ configure
...
$ make
... mit Fehlermeldung
$ cd server/mp4creator
$ make
... erfolgreich
Möglicherweise braucht es das erste "make" gar nicht, das habe ich nicht ausprobiert. Jedenfalls habt ihr jetzt eine kompilierte Version des mp4creator, diese kopiert ihr am Besten irgendwo in euer Home-Verzeichnis, bei mir liegt sie unter "/home/peter/bin/mp4creator". Ins Home-Verzeichnis deshalb, weil das Programm irgendwelche Daten in ein Unterverzeichnis "lib" schreibt. Das geht unter "/usr/(local/)bin" schief, wenn ihr keine root-Rechte habt.
Der Rest ist simpel: zuerst erstellt ihr mit mencoder das Video mit x264-Codec, als .avi-Datei und im two-pass-Verfahren. Das Video sollte 256 oder 512 Pixel breit sein, um die optimale Qualität zu erreichen:
mencoder -ss 32 -ovc x264 -x264encopts pass=1:turbo:bitrate=400:bframes=1:me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 -vf scale -zoom -xy 512 -oac faac -faacopts br=48:mpeg=4:object=2 -channels 2 -srate 22050 -ofps 24000/1001 input.avi -o /dev/null
mencoder -ss 32 -ovc x264 -x264encopts pass=2:turbo:bitrate=400:frameref=5:bframes=1:me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 -vf scale -zoom -xy 512 -oac faac -faacopts br=48:mpeg=4:object=2 -channels 2 -srate 22050 -ofps 24000/1001 input.avi -o tmp.avi
Wie das Ei beim Kuchenbacken trennt ihr dann Audio und Video mit dem mplayer:
mplayer -nolirc -nojoystick tmp.avi -dumpaudio -dumpfile tmp.aac
mplayer -nolirc -nojoystick tmp.avi -dumpvideo -dumpfile tmp.h264
Dann setzt ihr das Ganze per mp4creator wieder zusammen, schreibt die sog. "hints" für das Streaming dazu und lasst noch den Optimierer drüber laufen:
$ /home/peter/bin/mp4creator -create=tmp.aac output.mp4
$ /home/peter/bin/mp4creator -create=tmp.h264 -rate=23.976 output.mp4
$ /home/peter/bin/mp4creator -hint=1 output.mp4
$ /home/peter/bin/mp4creator -hint=2 output.mp4
$ /home/peter/bin/mp4creator -optimize output.mp4
$ rm -f tmp.avi
$ rm -f tmp.aac
$ rm -f tmp.h264
mp4creator gibt dabei ein Reihe von Fehlermeldungen aus, die ihr aber souverän ignoriert. Und schon habt ihr eine Datei, die sich per Quicktime überall anschauen lässt. Hier das ganze dann als Perl-Batch-Encoder, basierend auf dem asf-Encoder in oben zitiertem Post:
batchencode_mp4stream.pl
Das Skript startet ihr mit dem Kommando "perl batchencode_mp4stream.pl
0 Kommentare:
Kommentar veröffentlichen