ffmpeg: cómo convertir libaom-av1 al formato whatsapp

ffmpeg: cómo convertir libaom-av1 al formato whatsapp

Estoy intentando convertir un video que tiene formato de video libaom-av1y opusformato de audio.

ingrese la descripción de la imagen aquí

Lo convierto a mp4 usando

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

ahora 1.mp4es de tamaño2.4 mb

Pero cuando intento compartirlo whatsapp, se muestra como9.4 MB

ingrese la descripción de la imagen aquí

Ahora quiero mantener el mismo tamaño, entre 1,5 y 2 MB, y compartirlo whatsappconsame quality

yo también lo intenté

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

pero la calidad es muy mala

¿Cómo puedo hacer?

el vídeo original ( test.mkv) se puede obtener enhttps://0x0.st/-Ad4.mp4

Respuesta1

Debe comprender qué es realmente libaom-av1.

Es un códec extremadamente eficiente. Aproximadamente 3 veces más eficiente que libx264 que utiliza WhatsApp. Entonces, sin comprometer la calidad, necesitas tener al menos un archivo 3 veces más grande en WhatsApp, más aún si el archivo AV1 tiene un modelo de ruido. Incluso H265 es mucho menos eficiente que AV1, alrededor de un 30-40% menos dependiendo de si el archivo AV1 fue codificado con grano de película o no.

No hay nada que puedas hacer. WhatsApp decide utilizar el antiguo H264 como códec de vídeo. No puedes cambiar eso. 9 MB con x264 para un archivo AV1 de 2,4 MB parece totalmente razonable.

Fuera de contexto:

Si desea probar AV1 usted mismo, aquí tiene un comando para codificar cualquier video en AV1 usando el codificador de producción oficial libsvtav1, tenga en cuenta que esto llevará bastante tiempo (el preajuste 6 es un preajuste rápido, vaya al preajuste 4 si desea un ajuste uniforme). archivo más pequeño que, sin embargo, tomará más tiempo, el valor preestablecido 8 es solo un 10% más eficiente que el medio x265 pero a la misma velocidad extremadamente rápida):

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

-g 300 le dice al codificador que coloque un fotograma clave después de 300 fotogramas, cámbielo de acuerdo con su velocidad de fotogramas*5.

También puede usar el codificador de referencia libaom-av1, sin embargo, ese no solo es mucho más lento que svt y no es más eficiente, sino que tampoco es capaz de realizar subprocesos múltiples. En este caso es incluso menos eficiente que el comando svt anterior pero es mucho más lento. Puedes probarlo de nuevo:

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

información relacionada