Я пытаюсь найти данный кадр в видео с помощью библиотеки ffmpeg. Я знал, что есть функция av_seek_frame()
, но было рекомендовано использовать avformat_seek_file()
. Нечто подобное упомянуто здесь .
Я знаю, что avformat_seek_file()
не всегда может привести вас к тому, что вы хотите, но это нормально для меня. Я просто хочу перейти на ближайший ключевой кадр. Итак, я открываю видео, нахожу видеопоток и называю его так:
avformat_seek_file( formatContext, streamId, 0, frameNumber, frameNumber, AVSEEK_FLAG_FRAME )
Всегда возвращает 0, так что я понимаю это как правильное завершение. Тем не менее, это не работает, как следует. Я проверяю позицию байта как здесь до и после вызова avformat_seek_file()
. На самом деле это меняется, но меняется всегда одинаково, когда я пытаюсь поставить разные номера целевых кадров! Я имею в виду, что байтовое положение после этого вызова всегда одинаково даже с разными значениями frameNumber
. Очевидно, я делаю что-то не так, но не знаю, что именно. Я не знаю, имеет ли это значение, но я использую файлы .h264 для этого. Я пробовал разные флаги, разные файлы, используя временные метки вместо кадров, очищал буферы до и после и так далее, но у меня это не работает. Буду очень признателен, если кто-нибудь покажет мне, что с ним не так.