Структура GOP через FFmpeg


У меня есть два вопроса относительно группы изображений (GOP) в MPEG4 Video (как для MPEG4 Part2, так и для H. 264):

  1. Как я могу извлечь структуру GOP и размер видеоряда с помощью FFmpeg? Я знаю, что функция av_get_picture_type_char структуры AVPicture дает типы изображений для каждого кадра, но мне интересно, есть ли более прямой метод получения информации о GOP?

  2. Как я могу определить, имеет ли последовательность открытые GOPs или закрытые GOPs, т. е. одному GOP разрешено ссылаться на I и P фреймы в соседнем GOP?

1 3

1 ответ:

Ничего из этого напрямую не экспортируется в ffmpeg, поэтому вам придется разобраться в этих вещах самостоятельно. Поэтому короткий ответ для 1 - "нет". Если вы проанализируете фреймы (вам не нужно их декодировать) и получите тип фрейма, вы должны быть в состоянии определить местоположение в файле (смещение, в байтах) в AVPacket.кассовый терминал. Для каждого I-кадра в последовательности выполните поиск пакетов после него и отметьтеAVPacket . pos и AVPacket.ПТС . Если B (pos) > I (pos), но B (pts)

Цикл синтаксического анализа будет просто av_read_frame ().