FFmpeg提取当前帧时间戳

FFmpeg extracting current frame time stamp

本文关键字:时间戳 提取 FFmpeg      更新时间:2023-10-16

我需要在视频的特定间隔(例如从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秒)?

谢谢。

av_read_frame()将给您一个PTS (Presentation Time Stamp)。它是AVPacket的成员pts。也许这个值可以帮助你决定何时停止阅读。

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

frame_absolute_time = frame_number / FPS