Структура GOP через FFmpeg
У меня есть два вопроса относительно группы изображений (GOP) в MPEG4 Video (как для MPEG4 Part2, так и для H. 264):
-
Как я могу извлечь структуру GOP и размер видеоряда с помощью FFmpeg? Я знаю, что функция
av_get_picture_type_char
структурыAVPicture
дает типы изображений для каждого кадра, но мне интересно, есть ли более прямой метод получения информации о GOP? -
Как я могу определить, имеет ли последовательность открытые GOPs или закрытые GOPs, т. е. одному GOP разрешено ссылаться на I и P фреймы в соседнем GOP?
1 ответ:
Ничего из этого напрямую не экспортируется в ffmpeg, поэтому вам придется разобраться в этих вещах самостоятельно. Поэтому короткий ответ для 1 - "нет". Если вы проанализируете фреймы (вам не нужно их декодировать) и получите тип фрейма, вы должны быть в состоянии определить местоположение в файле (смещение, в байтах) в AVPacket.кассовый терминал. Для каждого I-кадра в последовательности выполните поиск пакетов после него и отметьтеAVPacket . pos и AVPacket.ПТС . Если B (pos) > I (pos), но B (pts)
Цикл синтаксического анализа будет просто av_read_frame ().