von stefan ram » Sa 14. Aug 2010, 15:55
Ein Fernsehempfänger erzeugt MPG-Dateien mit einem guten
GByte pro Stunde, die auf ein Archivformat umkodiert werden
sollen, bei dem es reicht, wenn Text und Bild gerade noch
verständlich (erkennbar) sind. Erhebliche Artefakte und
eine sehr niedrige Qualität sind dabei akzeptabel. Also:
ffmpeg -pass 1 -y -i source.mpg -r 5 -vcodec mpeg4 -qscale 30 -vf "scale=-1:288" -an "target.mp4"
ffmpeg -pass 2 -y -i source.mpg -r 5 -vcodec mpeg4 -qscale 30 -vf "scale=-1:288" -acodec libmp3lame -ac 1 -ar 22050 -ab 16k "target.mp4"
Das gelingt zunächst auch: Die Qualität ist so wie gewünscht
und der Speicherplatz beträgt nur noch zirka 1,5 % des Originals.
Es gibt aber folgende Probleme:
Der Ton ist nicht mehr synchron (scheint um einige Sekunden
abzuweichen - getestet mit drei verschiedenen
Wiedergabeprogrammen [eines davon erkannte gar keinen Ton
mehr]). Könnte es vielleicht die niedrige Frame-Rate von 5
fps sein? Gibt es bestimmte »magische« fps-Werte, die man
verwenden sollte? (Quelle: 25 fps.)
Der Fernsehsender schaltete während des aufgenommenen
Zeitraums wiederholt zwischen 4:3 und 16:9 hin und her.
Die Aufnahme »source.mpg« enthält diese Information auch
richtig, so daß das Wiedergabeprogramm an den richtigen
Stellen auch richtig zwischen 4:3 und 16:9 umschaltete.
Wie kann ich die gesamte Aufnahme in der Größe halbieren,
aber so, daß dabei Informationen über Änderungen der Größe
jeweils erhalten bleiben? Wenn ich einen Wert wie »288«
(siehe oben) fest vorgebe, ist das natürlich schlecht.
Aber ich kenne keine ffmpeg-Option, um zu sagen, daß die
jeweilige Größe, die ein Frame gerade hat, jeweils
halbiert werden soll.
Alternativ könnte ich statt »ffmpeg« auch »mencoder« oder
eventuell ein anderes Programm verwenden, falls jemand
ein Programm kennt, das besser dafür geeignet ist.
Auch eventuelle Hinweise auf für diesen Zweck bessere
ffmpeg-Optionen sind willkommen.