FFmpeg提取当前帧时间戳

发布于 2024-11-19 10:18:12 字数 385 浏览 1 评论 0原文

我需要在视频的特定间隔(例如从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伤感在游骋 2024-11-26 10:18:13

尝试找到每秒的帧数,然后使用该数字来计算每帧的准确时间,如下所示

frame_absolute_time = frame_number / FPS

Try to find frames per second and then use that number to calculate exact time of each frame as

frame_absolute_time = frame_number / FPS
陌若浮生 2024-11-26 10:18:12

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

av_read_frame() will give you a PTS (Presentation Time Stamp). It is AVPacket's member pts. Perhaps that value can help you decide when to stop reading.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文