FFMPEG / x264: Pase único: ¿cómo se aumentan las tasas de bits en el tiempo de inicio?

FFMPEG / x264: Pase único: ¿cómo se aumentan las tasas de bits en el tiempo de inicio?

Cuando se utiliza el modo de paso único con un tamaño VBV especificado, libx264 inicialmente "pondrá en bolsa de arena" la tasa de bits, presumiblemente debido a la falta de evidencia (o tal vez incluso a un error). (Esta es una continuación irónica de esta pregunta, que trataba sobre tasas de bits iniciales demasiado ALTAS con codificación de un solo paso.sinuna especificación VBV)

Consulte los gráficos de velocidad de bits en la parte inferior para obtener más información: observe la caída original, seguida de una sobrecorrección ("¡Oye, me quedan algunos bits!") antes de una normalización. Tenga en cuenta que esto se corrige en la solución de dos pasos. La falta del cuadro I inicial en estos dos gráficos es probablemente un error de la herramienta (el valor PTS del cuadro I inicial es 0,15 segundos).

Este efecto evita un procesamiento paralelo de "división, codificación y reensamblaje" de un recurso largo, ya que obtendrá un ritmo de calidad al comienzo de cada segmento.

Esto se puede solucionar mediante codificación de doble paso, una solución inaceptable para transmisiones en vivo (aunque, si se realiza en paralelo, se podría pagar el costo de la codificación de doble paso).

Hay dos soluciones que espero: cualquier ayuda sería más que bienvenida.

  1. Una solución de un solo paso en la que se le indica al codificador que contenga muchos más fotogramas inicialmente antes de producir la salida, reduciendo así el efecto inicial de saco de arena.

  2. Una forma de realizar una codificación limitada de dos pasos como una "tubería": la codificación completa de dos pasos como una tubería, por supuesto, no tiene sentido, pero debería ser posible tener "micropasos" donde el período de retroalimentación del pase sea algo así como uno. segundo. Esto es mucho menos ideal que una solución de un solo paso para evitar un efecto tan breve, pero sería aceptable si (1) es imposible.

    • Gráfico de tasa de bits de paso único: observe la "caída del saco de arena" inicial. Generado con:

ffmpeg -i 1080-60fps.mp4 -vf "escala=1200:720" -b:v 1000k -bufsize 1000k onepass.mp4

ingrese la descripción de la imagen aquí

  • Gráfico de tasa de bits de dos pasos: este es el resultado casi ideal. Tenga en cuenta que esta forma final no tiene por qué ser necesaria: evitar el saco de arena inicial es suficiente. Generado con:

ffmpeg -i 1080-60fps.mp4 -vf "escala=1200:720" -b:v 1000k -pass 1 -f mp4 /dev/null

ffmpeg -i 1080-60fps.mp4 -vf "escala=1200:720" -b:v 1000k -pass 2 twopass.mp4

Gráfico de tasa de bits de dos pasos: este es el resultado esperado

  • Sección del primer fotograma en la codificación de un solo paso.

ingrese la descripción de la imagen aquí

  • Sección del primer fotograma en la codificación de dos pasadas.

ingrese la descripción de la imagen aquí

información relacionada