FFmpeg提取当前帧时间戳
我需要在视频的特定间隔(例如从 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 秒)?
谢谢。
I need to extract frames in certain interval of the video, (eg from 40 sec to 50 sec).
Working in c++.
First I am getting position where I need to start reading
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 );
Then I using av_read_frame to get all sequential frames.
The problem that I have is that I dont know when to stop. How can I check that I reached my end interval (eg 50 sec) ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试找到每秒的帧数,然后使用该数字来计算每帧的准确时间,如下所示
Try to find frames per second and then use that number to calculate exact time of each frame as
av_read_frame()
将为您提供 PTS(演示时间戳)。它是AVPacket的成员pts。也许这个值可以帮助您决定何时停止阅读。av_read_frame()
will give you a PTS (Presentation Time Stamp). It is AVPacket's memberpts
. Perhaps that value can help you decide when to stop reading.