【发布时间】:2012-12-16 02:49:28
【问题描述】:
拜托,这不是类似帖子的重复!
我想找到并解码第 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;
- 我是否正确计算了第 7 帧的位置?如果我这样做了,那么要进入那个框架,我就做
av_seek_frame(pFormatCtx, -1, _7thFramePos, AVSEEK_FLAG_ANY),对吗? 如果第 7 帧是 P-Frame 或 B-Frame 会怎样,我如何解码? - 我注意到计算的值与
inStream->codec->ticks_per_frame不同,为什么?他们不应该是一样的吗?有什么区别?
【问题讨论】:
标签: c++ ffmpeg video-processing libavcodec