av_seek_frame使用-附源码

项目中做点播功能,需要快进快退功能,一个ts文件里可能包含多路视频流,根据视频流数seek即可。

大概思路:

可以根据pts来计算一桢在整个视频中的时间位置:

timestamp(秒) = pts * av_q2d(st->time_base)

然后再转换为内部的时间戳

ffmpeg同样为我们提供了不同时间基之间的转换函数:

int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq);

最后根据流索引seek即可。

下面是源码:

av_seek_frame使用-附源码