Пожалуйста, это не дубликат похожих постов!
Я хочу найти и декодировать N-й кадр, например, 7-й кадр.
Как я понял, используя time_base
Я могу посчитать, сколько тиков в каждом кадре, умножив его на 7, мы получим позицию 7-го кадра. Для подсчета тиков я делаю
AVStream inStream = getStreamFromAVFormatContext();
int fps = inStream->r_frame_rate.num;
AVRational timeBase = inStream->time_base;
int ticks_per_frame = (1/fps) / timeBase;
int _7thFramePos = ticks_per_frame * 7;
av_seek_frame(pFormatCtx, -1, _7thFramePos, AVSEEK_FLAG_ANY)
, право?inStream->codec->ticks_per_frame
, Зачем? Разве они не должны быть одинаковыми? В чем разница?Этот пост хорошо объясняет проблему.
http://www.hackerfactor.com/blog/index.php?/archives/307-Picture-Go-Back.html
Других решений пока нет …