Verwenden Sie ffmpeg, um mp4 in dieselbe hochwertige AVI-Datei umzuwandeln?

28

Ich würde gerne ffmpeg verwenden, um eine mp4-Videodatei in avi umzuwandeln, aber mit der gleichen Qualität, auch wenn sie mehr Platz benötigt. Wenn ich einfach mache:

ffmpeg -i file.mp4 file.mp4.avi

Die resultierende AVI-Datei ist von sehr geringer Qualität und pixelig. Wie kann ich diese Umwandlung durchführen, während die Video- und Audioqualität erhalten bleibt?

719016
quelle
3
Sie können den -sameqSchalter verwenden, mit dem derselbe Videocodec (H264 vorausgesetzt) ​​in den AVI-Container gestellt wird. Wenn Ihr Player H264 in AVI nicht unterstützt, müssen Sie das bestmögliche Videoformat (H264) in ein mittelmäßiges Format umcodieren, was nicht gut ist. Dann weisen Sie eine höhere Videobitrate XVID zu (sagen wir 2000 Kb / s). Audio ist
meiner

Antworten:

16

Sie verlieren immer ein wenig an Qualität, wenn Sie von einem Codec zu einem anderen, Video oder Audio umcodieren, aber vielleicht können Sie dies vermeiden, wenn Sie nur vom MP4-Containertyp zu einem AVI-Container wechseln möchten. codec:copykann hilfreich sein, wenn Sie keinen Grund zum Umcodieren haben (und es sollte schneller sein).

Wenn Sie transkodieren müssen, weil Sie einen bestimmten Video-Codec verwenden müssen, hoffe ich, dass Sie den obigen Vorschlag von Zetah in seinem Kommentar verwenden und den -sameqSchalter verwenden können. Alternativ können Sie die qscaleOption verwenden, um die Qualität manuell einzustellen. Je niedriger die Zahl, desto besser die Qualität, aber desto mehr Speicherplatz benötigt Ihre Datei.

Das letzte Mal, als ich ein Video transkodierte, schlug ich vor qscale=8.0, dass Sie experimentieren, um das Optimum zu finden, das der Qualität Ihrer Eingabe entspricht.

Marty Jay erwähnt hilfreicherweise, dass sameq den gleichen Quantisierer wie in der Eingabe bedeutet, was möglicherweise nicht die gleiche Qualität zur Folge hat. In dem Artikel, den er zitiert, wird die Verwendung der Multi-Pass-Konvertierung erwähnt. Dies ist ein guter Weg, um eine bessere Komprimierung zu erzielen, ohne die Qualität zu beeinträchtigen.

John S Gruber
quelle
Danke für die Tipps, ich versuche mal -sameq, wie es geht.
719016,
8
-sameq bedeutet NICHT die gleiche Qualität; ffmpeg.org/trac/ffmpeg/wiki/…
3
Es scheint empfohlen zu werden, die -qscale 0Option
user989762
Ziemlich alt, aber ich habe diese Warnung erhalten, die versucht, dies heute zu tun:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg
10

Meine Lösung:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

Genießen!!

Kuba
quelle
2
Beachten Sie, dass zum Einbetten von AVC-Streams in AVI-Container ein Hack erforderlich ist, der von vielen Community-gesteuerten Videoplayern (z. B. VLC, MPlayer, FFmpeg / Libav oder GStreamer, Media Player Classic) unterstützt wird, von vielen kommerziellen Playern (z. B. Windows Media Player) jedoch nicht und QuickTime / iTunes unterstützen es nicht).
David Foerster
4

Hier ist mein 2-Pass (Advanced Simple Profile), den ich ab und zu verwende.

pass 1:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null

pass 2:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi
Duffydack
quelle
Das ist toll, hat mir ein sehr kleines avi mit sehr guter qualität produziert!
jpo38