FFmpeg提取当前帧时间戳

时间:2011-07-11 22:22:01

标签: c++ ffmpeg timestamp

我需要在视频的特定间隔内提取帧(例如,从40秒到50秒)。 使用c ++。 首先,我得到了我需要开始阅读的位置

static double t = 10 ;//time in seconds
int64_t timestamp = t * AV_TIME_BASE; //destination time
av_seek_frame( pFormatContext , -1 ,  timestamp + pFormatContext->start_time ,AVSEEK_FLAG_BACKWARD );

然后我使用av_read_frame获取所有连续帧。 我遇到的问题是我不知道什么时候停下来。如何检查我是否达到了我的结束间隔(例如50秒)?

感谢。

2 个答案:

答案 0 :(得分:7)

av_read_frame()将为您提供PTS(演示时间戳)。它是AVPacket的成员pts。也许这个值可以帮助你决定何时停止阅读。

答案 1 :(得分:1)

尝试每秒查找帧数,然后使用该数字计算每帧的确切时间

frame_absolute_time = frame_number / FPS