Analisando fluxo de vídeo h264 de 100 GB

Analisando fluxo de vídeo h264 de 100 GB

Eu tenho um arquivo grande, um stream de vídeo h264 de um CCTV. Analiso esse arquivo com ffprobe e o resultado é 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

Tenho dois pequenos problemas:

  1. Posso saber se o arquivo existe em uma data específica (por exemplo, 1º de janeiro de 2014)? Posso analisar o fluxo de metadados do h264?
  2. No stream de vídeo, há imagens de diferentes câmeras, uma após a outra, ciclicamente. Posso dividir o stream de vídeo com base nas câmeras? É possível? Se for possível, também gostaria de mesclar os clipes de câmera separados em um vídeo de câmera.

Obrigado

Responder1

Posso saber se o arquivo existe em uma data específica (por exemplo, 1º de janeiro de 2014)? Posso analisar o fluxo de metadados do h264?

Não, porque o fluxo é simplesmente um fluxo de bits H.264 com (simplesmente falando) um quadro após o outro.

Ele não contém nenhum metadado. Quando você deseja metadados, você precisa de um contêiner, por exemplo, um fluxo de transporte MPEG-2, que é comumente escolhido para streaming de mídia, ou um arquivo MP4.

No stream de vídeo, há imagens de diferentes câmeras, uma após a outra, ciclicamente. Posso dividir o stream de vídeo com base nas câmeras? É possível?

Aparentemente, o stream usa um formato proprietário. O ffmpeg não pode decodificar esse tipo de vídeo com várias câmeras. Normalmente, um fluxo de bits H.264 Anexo B contém apenas quadros que pertencem à mesma sequência.

Você teria que escrever um analisador H.264 (ou começar com algo comoh264bitstream) e divida as unidades NAL do fluxo de bits em fluxos de bits separados, um por câmera.

Então, para decodificá-lo, seus fluxos de bits precisam conterUnidades SPS e PPS NAL. No seu fluxo não há nenhum, que é o que os erros informam, pois os quadros fazem referência a SPS/PPS que nunca foram declarados.

informação relacionada