Oct 13, 2023
Obtenga exportaciones ultrarrápidas en Davinci Resolve con los codificadores duales de la serie Nvidia RTX 4000 de Nick Lear
¡Exporta hasta 6 veces más rápido cambiando una configuración! Habiendo hecho recientemente un
¡Exporta hasta 6 veces más rápido cambiando una configuración!
Después de haber realizado recientemente un conjunto exhaustivo de pruebas de mi nueva tarjeta gráfica Nvidia RTX 4080 en una variedad de NLE y aplicaciones gráficas intensivas, quería profundizar en el nuevo Nvidia Encoder (NVENC) de octava generación que viene con la serie 4000 que acelera el codificación de AV1, H.265 (HVEC) y H.264 (AVC). Quería descubrir cómo aprovechar al máximo el hardware, especialmente los codificadores duales: esta vez Nvidia incluyó dos chips codificadores.
A menudo se dice, "Bueno, Rápido, Barato - Elija dos" y se adapta bastante bien a la postproducción. La codificación tiene una relación similar entre la calidad, la velocidad y el tamaño del archivo.
Por ejemplo, si corrige el tamaño del archivo fijando la tasa de bits, como es común, puede tener una mayor calidad al tomar más tiempo para realizar la codificación. Si corrige la calidad (usando, por ejemplo, el control deslizante de calidad constante en Handbrake), puede reducir un poco el tamaño del archivo al tomar más tiempo con la codificación. La forma de hacerlo es eligiendo un ajuste preestablecido diferente, como se ve aquí para el codificador x264 en Handbrake, por ejemplo.
Un preajuste se define de la siguiente manera:
Un ajuste preestablecido es una colección de opciones que proporcionarán una determinada velocidad de codificación a relación de compresión. Un preajuste más lento proporcionará una mejor compresión (la compresión es calidad por tamaño de archivo). Esto significa que, por ejemplo, si apunta a un tamaño de archivo determinado o una tasa de bits constante, obtendrá una mejor calidad con un ajuste preestablecido más lento. Del mismo modo, para una codificación de calidad constante, simplemente ahorrará la tasa de bits eligiendo un preajuste (fuente) más lento.
Sin embargo, la verdadera pregunta es si vale la pena tomarse ese tiempo extra. Algunas personas simplemente elegirán el preajuste más lento sabiendo que quieren la mejor calidad y están preparadas para esperarlo. Personalmente, siempre me gustaría saber si vale la pena hacer algo más lento: ¿qué sucede si espera 10 minutos adicionales todos los días para obtener una mejora del 0,01 % que nadie verá jamás? Bueno, resulta que es exactamente así, no solo para codificadores de software como x264, sino también para la nueva serie RTX 4000, a la que me referiré más adelante.
Hace un tiempo me encontré con una gran investigación de Jan Ozer llamada "Elegir un ajuste preestablecido x264" que muestra claramente que no se gana casi nada al usar algo más lento que el ajuste preestablecido "más rápido" en términos de calidad, pero le cuesta una buena cantidad de tiempo. si lo haces.
El codificador de hardware de Nvidia (NVENC) también tiene ajustes preestablecidos, oficialmente llamados P1 (más rápido) a P7 (más lento) que, según Nvidia, "determinan, por ejemplo, la estructura GOP, los marcos B, la codificación anticipada, etc.". No tengo tiempo para entender, pero es lo mismo: gastar un poco más de tiempo para obtener un poco más de calidad o un archivo más pequeño.
Y resulta que el tiempo de exportación es enormemente diferente entre estos ajustes preestablecidos. Realicé algunas pruebas en el RTX 4080 exportando un clip DNxHR UHD de 25 fps de 5 minutos a las tres opciones de salida (H.264, H.265 y AV1) en los 7 ajustes preestablecidos. Para H.265 y AV1,el preajuste más rápido fue alrededor de 6 veces más rápido que el más lento, pasando de alrededor de 50 FPS a alrededor de 300 FPS. Para poner eso en algún contexto,si tienes una línea de tiempo de 30 minutos, el preajuste "Muy lento" tardará más de 15 minutos y el preajuste "Muy rápido" tardará 2,5 minutos. Ese tipo de tiempo se suma si haces esto todos los días. Para obtener esta velocidad de exportación, el códec de entrada tiene que ser ProRes o DNxHR (o códec intermedio equivalente) con efectos ya almacenados en caché/renderizados; de lo contrario, el codificador no se alimenta lo suficientemente rápido.
También hay una razón por la cual la velocidad de codificación aumenta bruscamente para los dos preajustes más rápidos: es aquí donde entran en juego los codificadores duales. Aparentemente, bajo ciertas condiciones, las nuevas tarjetas pueden dividir un video en dos mitades y pasar cada mitad a cada codificador y luego recombinarlas. Para usar los codificadores duales en la nueva serie RTX 4000, necesita que lo siguiente sea cierto:
También solo pude lograr esto en Davinci Resolve (no en Premiere Pro o Shutter Encoder, por ejemplo). Es interesante que la codificación H.265 ahora sea más rápida en general que H.264. Creo que es hora de comenzar a usarla si aún no lo ha hecho.
Por supuesto, la gran pregunta es ¿cuál es la compensación en calidad por estas velocidades? Si bien puede y debe usar sus ojos para ver si una exportación tiene la calidad que necesita, para diferencias más sutiles es mejor usar algo como PSNR o VMAF para evaluar la calidad visual.
VMAF es un "algoritmo de evaluación de calidad de video perceptual ganador de un Emmy desarrollado por Netflix". Y puedes usarlo gratis dentro de FFmpeg. Seguí esta guía (nuevamente por Jan Ozer). Lo realmente bueno de VMAF es que tiene una puntuación de 100, lo que lo hace bastante fácil de entender y, según Netflix, una puntuación de más de 85 es buena.
Si bien hay una pequeña caída en la calidad de los ajustes preestablecidos, en realidad es muy pequeña: menos de la mitad de un punto VMAF y no es visible a simple vista. Realmente, con cualquier puntaje superior a 90, me resulta difícil ver cualquier artefacto. Se ve una diferencia mucho mayor al usar H.265 en lugar de H.264 (y AV1 es incluso mejor). Por supuesto, los números reales dependerán del material de origen, pero hice algunas otras pruebas y obtuve resultados similares.
Si bien la velocidad de codificación no afecta tanto la calidad, la tasa de bits/tamaño del archivo sí lo hace. Puede ver aquí un archivo de prueba de 1080p codificado en H.265 a tasas de bits de 10 Mbps a 1 Mbps: la calidad varía poco entre los ajustes preestablecidos, pero mucho entre las tasas de bits. En mi opinión, estaba muy contento con las codificaciones por encima de 6 Mbps.
Dado que a la mayoría de las personas no les falta espacio en el disco o velocidad de Internet, aumentar la tasa de bits es definitivamente la forma de aumentar la calidad, mientras se mantiene el beneficio de realizar la codificación rápidamente con los ajustes preestablecidos más rápidos.
En Premiere Pro hay opciones más limitadas, pero aún puede acelerar sus exportaciones mediante algunos ajustes juiciosos de la configuración. Los ajustes preestablecidos no están disponibles en H.264 y AV1 aún no está disponible (aparte de usar el complemento de terceros Voukoder), pero si elige HVEC (H.265) como formato y marca hacia abajo en la configuración de video, verá cinco opciones enumeradas como "Calidad": no tengo idea de por qué hay cinco y no siete (supongo que estoy tratando de mantenerlo más simple al dejar los dos exteriores). También debe asegurarse de haber elegido la codificación de hardware de un paso que utiliza el codificador Nvidia NVENC.
Una vez más, aquí se puede ahorrar mucho tiempo, aunque lamentablemente ninguno de ellos parecía acceder a los codificadores duales. Pero vi un aumento de velocidad del 67% al pasar de la configuración predeterminada "Buena" a la "Baja", y esta vez la caída en la calidad fue completamente insignificante (solo 0.1 puntos VMAF en todos los ajustes preestablecidos). Y llegar a 167 FPS es bastante impresionante, aunque no llegue a los 300 FPS de Davinci Resolve.
Shutter Encoder es una popular herramienta de codificación gratuita, así que pensé en echarle un vistazo también. Es muy útil y mejor que Handbrake en muchos sentidos (por ejemplo, mantiene intacto el código de tiempo). Es una interfaz para FFmpeg y, de forma predeterminada, utiliza codificadores de CPU como x264. Esto es excelente si tiene una tarjeta gráfica más antigua o si busca la mejor calidad posible. Puede forzarlo a usar NVENC si lo desea para velocidades mucho más rápidas; en mis pruebas, obtuve un aumento de velocidad de 10 veces al cambiar la configuración predeterminada a NVENC "muy rápido". Funcionó de manera similar a Premiere con 183 FPS y nuevamente no parecía poder usar los codificadores duales.
Encontré que los codificadores de software dieron 1 o 2 puntos VMAF más para el mismo material en general, por lo que nuevamente depende de si está tratando de exprimir la última pizca de calidad y no le importa dedicar tiempo a eso.
El codificador de hardware Nvidia (NVENC) ha sido de muy alta calidad durante muchas generaciones, lo suficientemente cerca de la calidad de los codificadores de software para que valga la pena y sea mucho más rápido. En esta serie RTX 4000 es aún mejor y la inclusión de codificadores duales es bastante emocionante. Poder acceder a ellos en Davinci Resolve es fantástico, lo que aumenta las velocidades de codificación hasta unos impresionantes 300 FPS mediante el uso de los ajustes preestablecidos más rápidos. Y esas velocidades implican una caída muy pequeña en la calidad, además de que podría compensar eso de todos modos aumentando un poco la tasa de bits, sin una desventaja real.
También creo que es hora de cambiar H.264 por H.265. El hardware en el extremo receptor ahora puede reproducirlo fácilmente y ahora es más rápido de hacer y de mejor calidad. H.264 está llegando a los 20 años ahora y H.265 ahora puede verse como la opción "segura" contra AV1 si eso lo hace sentir mejor.
¡El destino al que acuden los cineastas para equipos de preproducción, producción y posproducción!
el preajuste más rápido fue unas 6 veces más rápido que el más lento, si tiene una línea de tiempo de 30 minutos, el preajuste "Muy lento" tardará más de 15 minutos y el preajuste "Muy rápido" tardará 2,5 minutos.