Hier einige Beispiele zur Konvertierung von Video-Dateien mit ffmpeg.
Fast alles. An einigen Stellen hatte es bei mir gedauerte, sich mühsam die richtigen Optionen zusammenzusuchen. Das Folgende ist vielleicht für andere Videokonvertierungslaien hilfreich, denen es ebenso erging.
Es wird hier kein Wert auf besondere Optimierung, sei es der Qualität, der Geschwindigkeit oder des Speicherplatzverbrauchs gelegt. Hautsache das Ergebnis ist einigermaßen anseh- und hörbar.
Die Eingangsdatei und deren Format ist fast beliebig. Symbolisch
wird hier immer test.avi
verwendet. Das könnte natürlich genauso gut test.mp4,
test.flv
u.s.w. sein.
Es wurden die ffmpeg-Versionen, die mit den Linux-Distributionen SuSE 10.1 und openSuSE 10.3 geliefert werden, verwendet.
Um die folgenden Anleitungen verwenden zu können sollten Sie wissen, wie sie unter Linux Programm auf der Kommandozeile bedienen. Ebenso wird vorausgesetzt, dass sie mit Dateien, Speicherkarten und den Geräten, auf denen Sie die Videos ansehen wollen vertraut sind. Sie finden hier nur eine Liste der Befehle für die eigentliche Konvertierung.
Sie verwenden diese Anleitung auf eigene Gefahr unter dieser Lizenz.
ffmpeg -i test.avi -f psp -r 14.985 -s 320x240 -b 768 -ar
24000 -ab 32 -title "Filmtitel ohne Umlaute" M4V00001.MP4
Das Ergebnis muss nach Sonys
Vorgabe M4V00000.MP4 heißen, wobei die Nullen für
beliebige Zahlen stehen. Es läuft auf allen Firmwareversionen.
Eine Erklärung der verwendeten Optionen gibt die Ausgabe 1/2006
der Zeitschrift LinuxUser.
Hier ist mir nur ein two-pass-Verfahren bekannt, dass verwendbare Ergebnisse liefert.
ffmpeg -i test.avi -f mp4 -title "Filmtitel" -pass
1 -vcodec h264 -level 21 -s 480x272 -r 24000/1001 -b 762k -bt 768k
-bufsize 4000k -maxrate 4000k -g 250 -coder 1 /dev/null
ffmpeg -i test.avi -f mp4 -title "Filmtitel" -pass
2 -vcodec h264 -level 21 -s 480x272 -r 24000/1001 -b 762k -bt 768k
-bufsize 4000k -maxrate 4000k -g 250 -coder 1 -acodec aac -ac 2 -ab
96k M4V00001.MP4
Es funktioniert hier auf der PSP slim&light und sollte auf älteren Geräten ab der ofiziellen Firmwareversion 3.30 funktionieren, sowie mit aktueller Hombrew-Firmware.
Dies ist ein gutes Beispiel dafür, dass ffmpeg tatsächlich fast alles von allein kann.
ffmpeg -i test.avi -s 320x240 -qmax 8 Film.avi
Die Zahl hinter der -qmax–Option gibt ein Qualitätsgrenze
des Ergebnisses vor. Je niedriger die Zahl, desto höher
die Qualität und desto größer die Filmdatei.
Verwendet man stattdessen die -sameq–Option, versucht
ffmpeg beim Ergebnis dieselbe Qualität wie das Ausgangsmaterials
zu erreichen.
Die Firmware früher Versionen des GP-35 war fehlerhaft, weswegen der Videoplayer nicht in den Vollbildmodus geschaltet werden konnte. Soweit mir bekannt, tauscht der Hersteller diese Geräte innerhalb er Garantiezeit problemlos um.
Diese Gerät unterscheidet sich vom GP-43.3. vor allem durch seinen Bildschirm, der eine Auflösung von 480x272 hat.
ffmpeg -i test.avi -s 480x272 -qmax 8 Film.avi
Das Bildschirmformat des GP-35 ist also 4:3, das des GP-43 16:9. Da diese Gerät im Vollbildmodus den Film automatisch skalieren, ohne dass der Benutzer dies vorgeben kann, muss Cropping und Pading verwendet werden um Filme des jeweils anderen Formats verzerrungsfrei darstellen zu können.
Die erzeugten Filme sollten auch auf vielen andern Navigationsgeräten, die Videoplayerfunktionen bieten, wie etwa einige Geräte von TomTom oder Navigon, funktionieren.
ffmpeg -i test.avi -s 320x240 -aspect 1.333 -vcodec mpeg4 -f
avi -qmax 8 -vtag xvid Film.avi
Der GP2X kann zur Wiedergabe über ein Adapterkabel auch an
den S-Video oder Composite-Videoeingang
eines PAL-Fernsehgeräts angeschlossen werden. In diesem Fall ist
es sinnvoll die Auflösung mit -s 640x480 zu
erhöhen.
ffmpeg -i test.avi -s 512x352 -f avi -vcodec mjpeg -acodec
pcm_mulaw Film.avi
Die Videodatei Film.avi kann man dann auf eine SD-Karte überspielen und über den Fotokanal der Wii abspielen. Das Abspielen von auf CD oder DVD gebrannten Dateien unterstützt die Wii nicht.
Als Audiocodec kann statt pcm_mulaw auch pcm_s16le
oder pcm_u8 verwendet werden. Da der verwendete Videocodec
mjpeg nicht sehr effektiv ist, werden die Dateien
relativ groß. Andererseits hat die Wii anscheinend Probleme große Dateien abzuspielen.
Unter Umständen muss daher ein längerer Film in kleine Stück von etwa 15 Minuten Dauer aufgeteilt werden.
Spielt die Wii einen Film nicht ab, so kann man mit
ffmpeg -i test.avi -t 300 -s 512x352 -f avi -vcodec mjpeg -acodec
pcm_mulaw Film.avi
nur die ersten fünf Minute (also 300 Sekunden) des Films codieren, um zu testen,
ob diese erfolgreich abgespielt werden können.
Außerdem funktioniert die Wii nur mit SD-Karten bis höchstens 2GB, nicht mir neueren SDHC-Karten, die mehr Kapazität bieten würden.
ffmpeg -i test.avi -f 3gp -s 176x144 -ar 8000 film.3gp
Manchmal hat der Ausgangsfilm schwarze Balken, die während des Umwandelns entfernt werden sollen. Das trifft z.B. für manche 16:9-Fernsehendungen, die von Onlinetvrecorder ausgeliefert werden, zu. Das folgende Beispiel wandelt einen 16:9 Film, der mit Balken zu einem 4:3 Film mit der Auflösung 512x384 aufgeblasen wurde, zurück.
ffmpeg -i test.avi -croptop 80 -cropbottom 80 -s 480x272
-aspect 1.7777 Film.avi
Manche Abspielgeräte bieten keine Möglichkeit, die Bildgröße während des Abspielens zu beeinflussen, z.B. wird bei den o.g. Navigationsgeräten der Film im Vollbildmodus immer auf den ganzen Bildschirm hochskaliert. Einer Verzerrung (Flachköpfe, Eierköpfe ...) kann man vorbeugen, indem man der Videodatei geeignete schwarze Balken mitgibt. Der folgende Befehl konvertiert einen Film im altertümlichen 4:3-Format so, dass er auf dem 16:9-Bildschirm des GP-43.3 einigermaßen unverzerrt dargestellt wird.
ffmpeg -i test.avi -s 352x272 -padleft 64 -padright 64
-aspect 1.7777 Film.avi
Diese Darstellung mit schwarzen Balken links und rechts bezeichnet man als Pillarbox.
Zu beachten ist, dass Padding immer
auf das Ergebnis der Konvertierung wirkt, also immer nach
dem Einstellen der Auflösung mit der -s–Option
wirkt. Im obigen Beispiel hat das Ergebnis daher die horizontale
Auflösung 64+352+64=480. Cropping
hingegen wirkt so nur, wenn die Cropping–Optionen
nach der -s–Option in der Kommandozeile angegeben
werden. Werden sie vorher angegeben hat daher das Ergebnis nach
wie vor die mit der -s–Option angegebene Auflösung.
Neben dem altbekannten Fernsehformat mit einem Breite-zu-Höhe-Verhältnis
von vier zu drei (4:3=1,3333) und dem neueren 16:9 (1,7777)
ist auch das sehr breite Format 2,35 (47:25) sehr verbreitet.
Ohne es hier zu sehr ausbreiten zu wollen eine Beispiel für die
Konvertierung eines solchen Films zur näherungsweise richtigen Darstellung
auf dem GP-43 (also einem 480x272 Display)
ffmpeg -i test.avi -s 480x208 -padtop 32 -padbottom 32 -qmax 8 -aspect=1,7777 Film.avi
und dem GP-35 (also einem 320x240 Display)
ffmpeg -i test.avi -s 320x128 -padtop 64 -padbottom 48 -qmax 8 -aspect=1,3333 Film.avi
Diese Darstellung mit schwarzen Balken oben und unten bezeichnet man als Letterbox.
Falls der Ausgangsfilm Interlacing zeigt (Kammartefakte),
können diese mit der Option -deinterlace entfernt
werden.
Wer nun doch mehr Hintergrundwissen wünscht, findet hier einen Einstiegspunkt.
Impressum: Die Daten gemäß Teledienstgesetz über den Verantwortlichen für diese Seite finden Sie bei der Internic.
Letzte Aktualisierung: 29. Mai 2008