FFMPEG чтение ключевых кадров - PullRequest
3 голосов
/ 11 июня 2011

Я пытаюсь написать программу на c ++, которая бы считывала ключевые кадры из видеофайла с помощью ffmpeg. До сих пор мне удалось получить все кадры, используя av_read_frame, где вы последовательно читаете покадровый.

Но у меня возникли некоторые проблемы при использовании av_seek_frame, который (если я прав) должен был выполнить трюк для ключевых кадров.

int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);

У меня есть FormatContext, но каковы другие правильные аргументы для последовательного получения только всех ключевых кадров?

Есть ли другая функция, которую я могу использовать вместо этого?

Спасибо

РЕДАКТИРОВАТЬ: В av_read_frame я получаю AVPacket, который я могу использовать для получения данных кадра, но как я могу получить пакет с помощью av_seek_frame?

РЕШЕНИЕ: ОК, в AVFrame-> key_frame есть простое логическое значение. True, если это ключевой кадр

1 Ответ

2 голосов
/ 11 июня 2011

av_seek_frame имеет возможность поиска определенной метки времени в видеофайле. Требуется 4 параметра: указатель на AVFormatContext , индекс потока , отметка времени для поиска и flags для выбора направления и режим поиска.

Затем функция будет искать первый ключевой кадр до заданной отметки времени.

Обратитесь к документации этой функции для получения дополнительной информации .

...