parsing encoding ffmpeg h.264 decoding

parsing - convirtiendo el archivo.mov al archivo.h264



encoding ffmpeg (1)

bien, este es el caso, realmente quiero analizar los fotogramas de un archivo mov. obtener los marcos codificados h264. y lo he logrado utilizando ffmpeg, pero cuando trato de hacer una película de nuevo usando ffmpeg -i test* test.mov obtengo test00: Invalid data found when processing input por lo que hay algo no correcto con la estructura de los marcos como lo entiendo, un marco debe tener la siguiente apariencia:

00 00 00 01 XX datos -------------

donde XX dice si es un cuadro I, P o B. o más específicamente type(XX) = 0x0F && XX dice si es I (tipo (XX) = 5?), P (tipo (XX) = 7?) o B (tipo (XX) = 8?) cuadro. No estoy seguro acerca de este número, lo he estado buscando pero no encontré buenas fuentes. así que esa es la pregunta número uno, ¿qué número debería ser el NALU para los diferentes cuadros?

de todos modos, cuando uso av_read_frame en el archivo mov, obtengo un marco que se ve así:

4B = tamaño, 1B = XX y luego datos. (al menos esto es lo que creo que tengo)

los archivos donde almaceno los marcos son siempre de un tamaño largo cuando los miro en un editor hexadecimal (por lo demás también, por supuesto). y XX siempre es 65 (es decir, tipo (XX) = 5) en el primero y luego 61 (es decir, tipo (XX) = 1) para un par de fotogramas y luego de vuelta a 65 para un fotograma y así sucesivamente.

Supongo que estos son marcos como: IPPPPPPIPPPPPPPIPPPPP PP ... sin embargo, mi suposición sobre los números de tipo para los diferentes tipos de cuadros es falsa, lo cual es muy probable. (cualquier sugerencia sobre la lectura sobre esto? excepto el ISO / IEC 14496-10, realmente no lo entiendo).

Intenté eliminar el tamaño y anexar 00 00 00 01 antes del byte XX y los datos, pero sin éxito. ¿Algún consejo sobre cómo podría modificar los marcos para que sean marcos codificados con H264?


Antes que nada, debo recomendar una buena herramienta para entender las transmisiones H264: http://sourceforge.net/projects/h264bitstream/

No, para responder a su pregunta específica, sí, los marcos generalmente comienzan con 65 y 61. Las unidades NAL especiales que típicamente comienzan con 67 y 68 son, respectivamente, SPS (conjunto de parámetros de secuencia) y PPS (conjunto de parámetros de imagen).

También sugiero que intente utilizar ffmpeg -i input.mov -vcodec copy output.h264 para obtener la secuencia del anexo B (con 00 00 00 01) correctamente como un solo archivo.

No podía entender exactamente qué es lo que intentas lograr extrayendo fotogramas de mov y poniéndolos en test.mov de nuevo.