У меня есть большой файл, потоковое видео h264 с CCTV. Я анализирую этот файл с помощью ffprobe, и результат такой:
[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
У меня две маленькие проблемы:
- Могу ли я узнать, есть ли в файле конкретная дата (например, 1 января 2014 г.)? Могу ли я проанализировать поток метаданных h264?
- В видеопотоке циклически идут изображения с разных камер друг за другом. Можно ли разделить видеопотока по камерам? Возможно ли это? Если возможно, я бы также хотел объединить отдельные клипы с камер в одно видео с камеры.
Спасибо
решение1
Могу ли я узнать, есть ли в файле конкретная дата (например, 1 января 2014 г.)? Могу ли я проанализировать поток метаданных h264?
Нет, потому что поток представляет собой просто поток битов H.264 с (проще говоря) одним кадром за другим.
Он не содержит никаких метаданных. Когда вам нужны метаданные, вам нужен контейнер, например, MPEG-2 Transport Stream, который обычно выбирается для потокового мультимедиа, или файл MP4.
В видеопотоке циклически идут изображения разных камер друг за другом. Можно ли разделить видеопотока по камерам? Возможно ли это?
Видимо, поток использует фирменный формат. ffmpeg не может декодировать такое многокамерное видео. Обычно битовый поток H.264 Annex B содержит только кадры, принадлежащие одной последовательности.
Вам придется написать анализатор H.264 (или начать с чего-то вродеh264bitstream
) и разделите блоки NAL из потока битов на отдельные потоки битов, по одному на камеру.
Затем, чтобы декодировать его, ваши битовые потоки должны содержатьПодразделения SPS и PPS NAL. В вашем потоке их нет, о чем и говорят ошибки, поскольку кадры ссылаются на SPS/PPS, которые никогда не были объявлены.