¿Es posible cortar una transmisión h.264 en cualquier lugar, sin volver a codificarla?

¿Es posible cortar una transmisión h.264 en cualquier lugar, sin volver a codificarla?

Nota: originalmente me había referido erróneamente a una transmisión h.264 con el lenguaje más común de ser un archivo MP4, lo siento.


Soy consciente de la necesidad habitual de comenzar a dividir un h.264 en un fotograma clave, de modo que el vídeo resultante comience con un fotograma clave, pero me pregunto qué tiene la estructura/especificación de transmisión que lo hace así.

¿Debe aparecer un fotograma clave cada X fotogramas como parámetro fijo de todo el archivo, o puede haber un intervalo variable entre fotogramas clave? Si el jugador simplemente toma fotogramas tal como aparecen y dibuja todo (fotograma clave) o actualiza parte de él (fotograma no clave), ¿por qué importa el intervalo de fotograma clave?

Si no importa el intervalo, y quisiéramos cortar el fotograma 87 de una secuencia de fotogramas clave cada 100, ¿no podríamos usar los 86 fotogramas del preámbulo para calcular un nuevo fotograma clave para el nuevo archivo y colocar los 12 restantes no? fotogramas clave del archivo original para llevarnos al siguiente fotograma clave, luego al siguiente fotograma clave original (fotograma 100) y continuar desde allí.

es decir, el archivo termina con "nueva clave, 12 originales sin claves, clave original, 99 originales sin claves, clave original ..."

Respuesta1

Los fotogramas clave pueden ocurrir en cualquier momento, no puedo encontrar una cita, pero me los imagino en una película con muchas escenas. Desea que un fotograma clave sea el primer fotograma después de cualquier cambio drástico de escena para preservar la calidad del vídeo; de lo contrario, terminará con una tormenta de ruido cuando el compresor de vídeo intente crear una nueva escena utilizando muchos cambios "delta". de la escena anterior.

Para una transmisión normal, tener una sincronización de fotogramas clave consistente podría ser aceptable, pero para el contenido final se logrará una mejor calidad al tener un fotograma clave en un límite de cambio de escena.

DeFotogramas clave, intercuadros y compresión de vídeo

El fotograma clave (i-frame) es el fotograma completo de la imagen de un vídeo. Los fotogramas posteriores, los fotogramas delta, sólo contienen la información que ha cambiado. Los fotogramas clave aparecerán varias veces dentro de una secuencia,dependiendo de cómo se creó o cómo se transmite.

De hecho, esajustable y depende de sus requisitos de calidad y tasa de bits.

ElEl valor predeterminado para mp4 es un fotograma clave cada 250 fotogramas.(aproximadamente cada 10 segundos). Esto es malo para la transmisión porque es más difícil cambiar las resoluciones.Youtube utiliza un intervalo de fotogramas clave de 2 segundos.

También existen algunos métodos para extraer solo iframes (fotogramas clave) como lo mencionaBogoToBogo: MINIATURAS (IFRAME / CAMBIO DE ESCENA) - 2020

miniaturas de i-frame

El siguiente comando creará una imagen en miniatura en cada I-frame, denominada yi01.png, yi02.jpg, yi03.png...yi116.

ffmpeg -i yosemiteA.mp4 -f image2 -vf "select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr yi%03d.png
  1. select='eq(pict_type,PICT_TYPE_I)': extrae la imagen I-frame
  2. vsync: método de sincronización de vídeo.
  3. vfr: velocidad de fotogramas variable.

información relacionada