Estoy comprimiendo algunos videos para archivarlos y llegué a esta configuración que me brinda una buena calidad general en un tamaño pequeño:
ffmpeg -threads 4 -y -hide_banner -i input.mp4 -vf scale=-2:480 -c:v libx264 -b:v 200k -preset slow -tune animation -movflags faststart -pix_fmt yuv420p -an -f mp4 -pass 1 NUL
ffmpeg -threads 4 -y -hide_banner -i input.mp4 -vf scale=-2:480 -c:v libx264 -b:v 200k -preset slow -tune animation -movflags faststart -pix_fmt yuv420p -pass 2 2-pass-x264.mp4
Esta calidad de salida es aceptable para mis necesidades:
Pero me gustaría disfrutar de la aceleración por hardware, es mucho más rápida.
Así que probé:
ffmpeg -hwaccel nvdec -y -hide_banner -i input.mp4 -vf scale=-2:480 -movflags faststart -pix_fmt yuv420p -c:v h264_nvenc -b:v 200k -maxrate 2M -bufsize 1M -rc-lookahead:v 30 -rc:v vbr_hq -preset slow -profile:v high -level 5.1 -an h264_nvenc.mp4
Pero esto me da una salida con peor calidad general y en partes complejas, las cosas empeoran:
¿Es posible lograr casi la misma calidad general (para una tasa de bits baja) usando el codificador h264_nvenc?
No, realmente no. Las nuevas tarjetas nvidia basadas en Turing producirán una mejor calidad que las generaciones anteriores. Pero dado que nvenc es una función fija y no un software que se ejecuta en la GPU, no se puede actualizar ni modificar, excepto algunas opciones, como los ajustes preestablecidos.
h264_nvenc es capaz de codificar en calidad constante, al menos desde Pascal en adelante. Tuve que investigar un poco en Internet para descubrir cómo usarlo correctamente, pero finalmente encontré una fórmula que funcionaba.
Un comando como el siguiente grabará con calidad constante, y el valor CQ 26 producirá aproximadamente la misma pero ligeramente mejor calidad, medida con VMAF, como una codificación libx264 con las siguientes opciones: -vcodec libx264 -level 4.1 -profile:v high -tune film -preset medium -crf 23
. La tasa de bits H264_Nvenc fue aproximadamente un 19 % más alta que la codificación libx264, pero tuvo una puntuación VMAF ligeramente mejor. Hice estas pruebas en algunas grabaciones de juegos de 1080p60, pero también en algunos avances de películas de 1080p.
ffmpeg -i input.mkv -c:v h264_nvenc -preset p6 -profile:v high -tune hq -rc-lookahead 8 -bf 2 -rc vbr -cq 26 -b:v 0 -maxrate 120M -bufsize 240M output.mkv
Importante:
-maxrate 120M -bufsize 240M
, el modo CQ no se comporta en consecuencia y reducir su valor no producirá mejores resultados. El modo de calidad constante se activa especificando el control de tasa de bits variable junto con un parámetro CQ, una tasa de bits establecida en cero y los dos parámetros anteriores establecidos en un valor grande que no limitará la salida. No tenga miedo de esos valores, ya que la tasa de bits será bastante buena.Especifique la tasa de bits tal como -b:v 0
se hizo el truco, la tasa de bits general pasó de 2m
a 16m
.
ffmpeg -i in.mp4 -c:v h264_nvenc -b:v 0 out.mp4
usuario27704
SlimSCSI