Есть ли способ отфильтровать кадры I / B / P в видеопотоке MPEG и получить доступ к информации о макроблоке?

Я пытаюсь сделать программу для анализа видео MPEG потоков в C или C ++.

Я смог узнать типы кадров в видеофайле, используя

ffprobe -show_frames -pretty File.mpg | grep 'pict_type' > pict_type.txt

Однако, исходя из порядка кадров, кажется, что они находятся в порядке «отображения» (IBBPBBP …), а не в порядке «передачи» (IPBBPBBPBB …), и это не совсем идеальный способ сделать что-либо, как я могу ». Я уверен, что команда не пропустила ни одного кадра или чего-либо еще, поскольку она находится за пределами моей программы

Я пробовал OpenCV, но, похоже, информация, которая мне нужна, слишком низка для OpenCV, и я считаю, что решение лежит в ffmpeg или libavcodec, но документация — это кошмар после CLI. Хотя я открыт для других решений!

Информация, которая мне нужна:

  • Тип каждого кадра (I, B или P)
  • Общее количество макроблоков внутри кадра
  • Количество внутрикодированных макроблоков внутри P-кадра
  • Количество прогнозируемых как макроблоков в прямом, так и в обратном направлении в кадре B
  • Количество только что предсказанных макроблоков внутри B-кадра
  • Количество макроблоков с прямым перенаправлением внутри B-кадра

Буду очень признателен за вашу помощь!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]