La recodificación de H.264 a H.264 lo hizo un 40 % más grande

Tengo algunas imágenes transmitidas en vivo (codificadas con una tasa de bits constante) y he estado tratando de reducir el tamaño del archivo para el almacenamiento a largo plazo. Pensé que, dado que la velocidad de codificación ya no es una restricción para mí, podría dejar que el codificador se tomara más tiempo y creara un archivo más pequeño.

El metraje original se codificó a 12 Mbps, pero cuando intenté recodificarlo con FFmpeg (libx264, CRF 18 y preset veryslow), el resultado fue de 17 Mbps.

Mi pregunta es, ¿cómo puede el uso de esta configuración hacer que un archivo sea tan dramáticamente más grande que el original? Tal como lo entiendo, el objetivo del ajuste preestablecido muy lento es tomar mucho tiempo y hacer el video H.264 más comprimido posible (ignorando el ajuste preestablecido de placebo), pero en este caso, ¡sería mucho mejor no hacer nada! Entiendo que sea un poco más grande, porque tiene que codificar algunos artefactos de compresión, pero no un aumento del 40%.

CRF 18 es funcionalmente sin pérdidas. Deberías haber esperado un archivo grande. Suba hasta 20, 22 o incluso 24 hasta que obtenga la relación calidad/tamaño que está buscando.
Sé que es funcionalmente sin pérdidas; esa era mi intención (aunque intentaré mejorarla y ver hasta dónde tengo que llegar). Me pareció muy extraño que pudiera obtener algo funcionalmente sin pérdidas con un aumento de tamaño del 40 %, pero podía obtener algo perfectamente sin pérdidas con un aumento de tamaño del 0 %.
Yo personalmente no volvería a codificar en absoluto. Guardaría el original. No obtendrá mucha más compresión sin pérdida de calidad. Además, cuanto más ajustada sea la compresión, menos podrá trabajar con el archivo en el futuro.

Respuestas (1)

Está utilizando un factor de compresión de velocidad de bits variable basado en la calidad en algo que ya tiene artefactos. Eso significa que va a intentar preservar el video exactamente como está, los artefactos incluidos y los artefactos tienden a no codificarse bien. Esto significa que tiene una entrada de video que probablemente sea más difícil de codificar que la original y eligió una compresión basada en la calidad que probablemente también sea de mayor calidad que la que podría administrar su original de 12 Mbps. Esto significa que se debe usar una velocidad de datos más alta en general para tratar de evitar pérdidas adicionales de la segunda generación de codificación, incluso con las optimizaciones adicionales que puede manejar un ciclo de compresión más lento, no puede superar la complejidad adicional de la primera codificación. y la configuración de calidad que se está utilizando.

Si se tratara de cualquier tipo de transmisión HD, no es realmente tan sorprendente, ya que 12 Mbps es un nivel de compresión de consumo final muy comprimido para cualquier formato HD. Realmente no es una gran sorpresa que no se vuelva a codificar bien.