Tengo un archivo grande, un video de transmisión h264 de un CCTV. Analizo este archivo con ffprobe y el resultado es este:
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] concealing 890 DC, 890 AC, 890 MV errors in I frame
[h264 @ 0000000002d24480] sps_id 1 out of range
Input #0, h264, from 'E:\example_1':
Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Main), yuv420p, 704x576, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Tengo dos pequeños problemas:
- ¿Puedo saber si en el expediente existe una fecha específica (por ejemplo, 1 de enero de 2014)? ¿Puedo analizar el flujo de metadatos del h264?
- En la transmisión de vídeo aparecen imágenes de diferentes cámaras, una tras otra, de forma cíclica. ¿Puedo dividir la transmisión de video según las cámaras? ¿Es posible? Si es posible, también me gustaría fusionar los clips de la cámara separados en un solo video de la cámara.
Gracias
Respuesta1
¿Puedo saber si en el expediente existe una fecha específica (por ejemplo, 1 de enero de 2014)? ¿Puedo analizar el flujo de metadatos del h264?
No, porque la transmisión es simplemente una transmisión de bits H.264 con (simplemente hablando) un cuadro tras otro.
No contiene ningún metadato. Cuando desea metadatos, necesita un contenedor, por ejemplo, un Transport Stream MPEG-2, que comúnmente se elige para la transmisión de medios, o un archivo MP4.
En la transmisión de vídeo aparecen imágenes de diferentes cámaras, una tras otra, de forma cíclica. ¿Puedo dividir la transmisión de video según las cámaras? ¿Es posible?
Aparentemente, la transmisión utiliza un formato propietario. ffmpeg no puede decodificar ese tipo de video multicámara. Normalmente, un flujo de bits del anexo B de H.264 sólo contiene tramas que pertenecen a la misma secuencia.
Tendrías que escribir un analizador H.264 (o comenzar con algo comoh264bitstream
) y divida las unidades NAL del flujo de bits en flujos de bits separados, uno por cámara.
Luego, para decodificarlo, sus flujos de bits deben contenerUnidades SPS y PPS NAL. En tu flujo, no hay ninguno, que es lo que te dicen los errores, ya que los fotogramas hacen referencia a SPS/PPS que nunca fueron declarados.