ffmpeg: So konvertieren Sie libaom-av1 in das WhatsApp-Format

ffmpeg: So konvertieren Sie libaom-av1 in das WhatsApp-Format

Ich versuche, ein Video zu konvertieren, das das Videoformat libaom-av1und opusdas Audioformat hat

Bildbeschreibung hier eingeben

Ich konvertiere es in mp4 mit

ffmpeg -y -i test.mkv -c copy -c:a aac 1.mp4

jetzt 1.mp4ist von Größe2.4 mb

Aber wenn ich versuche, es zu teilen whatsapp, wird es als angezeigt9.4 MB

Bildbeschreibung hier eingeben

whatsappJetzt möchte ich die gleiche Größe von etwa 1,5 bis 2 MB beibehalten und mit anderen teilensame quality

Ich habe auch versucht

ffmpeg -y -i test.mkv \
  -c:v libx264 -crf 28 -preset medium -profile:v baseline -level 3.0 -pix_fmt yuv420p \
  -c:a aac -ar 44100 -ac 2 -b:a 48k \
  -movflags faststart \
  1.mp4

aber die Qualität ist sehr schlecht

Wie kann ich

Das Originalvideo ( test.mkv) ist erhältlich unterhttps://0x0.st/-Ad4.mp4

Antwort1

Sie müssen verstehen, was libaom-av1 eigentlich ist.

Es handelt sich um einen äußerst effizienten Codec. Ungefähr dreimal so effizient wie libx264, das WhatsApp verwendet. Ohne Kompromisse bei der Qualität benötigen Sie in WhatsApp also mindestens eine dreimal größere Datei, sogar noch mehr, wenn die AV1-Datei ein Rauschmodell enthält. Sogar H265 ist weit weniger effizient als AV1, etwa 30–40 % weniger, je nachdem, ob die AV1-Datei mit Filmkörnung codiert wurde oder nicht.

Da kann man nichts machen. WhatsApp verwendet als Video-Codec das alte H264. Das kann man nicht ändern. 9 MB mit x264 für eine 2,4 MB große AV1-Datei erscheinen völlig angemessen.

Offtopic:

Wenn Sie AV1 selbst ausprobieren möchten, finden Sie hier einen Befehl zum Kodieren beliebiger Videos in AV1 unter Verwendung des offiziellen Produktionskodierers libsvtav1. Beachten Sie, dass dies einige Zeit in Anspruch nehmen wird (Voreinstellung 6 ist eine schnelle Voreinstellung. Wechseln Sie zu Voreinstellung 4, wenn Sie eine noch kleinere Datei möchten, was jedoch länger dauern wird. Voreinstellung 8 ist nur 10 % effizienter als x265 Medium, bietet aber die gleiche extrem hohe Geschwindigkeit):

ffmpeg -i input.mp4 -vcodec libsvtav1 -acodec copy -qp 23 -preset 6 -g 300 output.mkv

-g 300 weist den Encoder an, nach 300 Frames einen Keyframe zu platzieren. Ändern Sie dies entsprechend Ihrer Framerate*5.

Sie können auch den Referenz-Encoder libaom-av1 verwenden, dieser ist jedoch nicht nur viel langsamer als svt, ohne dabei effizienter zu sein, sondern kann auch nicht wirklich Multithreading. In diesem Fall ist er sogar noch weniger effizient als der obige svt-Befehl, aber viel langsamer. Sie können ihn natürlich ausprobieren:

ffmpeg -i input.mp4 -vcodec libaom-av1 -cpu-used 6 -acodec copy -crf 23 output.mkv

verwandte Informationen