首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ffmpeg FPS信息与视频不匹配

ffmpeg FPS信息与视频不匹配
EN

Stack Overflow用户
提问于 2017-12-04 01:39:25
回答 2查看 735关注 0票数 0

我有一堆视频,里面有一些视频里面正在发生的事情。其中一个这样的信息是以秒为单位,以小数点为单位给出的。

为了获取视频的FPS,我使用ffmpeg -i

但是当我使用给定的FPS手动计算一个特定帧的时间时,它不匹配。

例如,ffmpeg输出FPS = 30。

我看视频统计,156.8 = 2.368的帧必须是4704'th帧。我使用“skvideo”打开视频,读取所有帧,并查看4704'th帧。这是时间2.12?我在多个视频中检查了多个这样的实例,这是一种常见的行为。

我不明白为何会这样,又怎样才能解决问题呢?

因此,我并没有被芬伯所束缚。视频正在被用来阅读视频。我尝试了opencv,到目前为止,它不适用于VideoCapture,重新安装它对我来说花费很大。但是我想'opencv/skvideo‘应该不重要,我们也可以手动计算帧。

所以,在解决方案中,我在寻找-

  1. 给定视频内部的时间戳,如何找到特定时间位置的帧?
  2. 如果有人可能已经对此进行了研究,则这与THUMOS数据集有关。我在Ubuntu 16.04

EDIT_1

实际上,我可以更具体一些,因为这是一个公开的数据。时限是一项重要的活动。例如,在视频中,什么时候发生篮球扣篮?它是成对的-开始结束。有些视频有多种活动,有些只有一个。

这里是一个示例视频,下面是活动时间。

代码语言:javascript
运行
复制
[[  16.5, 20.8],
[  26.6, 32.2],
[  34.8, 42.1],
[  47.8, 50.0],
[  58.1, 62.9],
[  65.6, 67.2],
[  68.5, 74.0],
[  76.4, 78.3],
[  78.7, 79.8],
[  80.8, 82.1],
[  85.0, 87.3],
[  90.1, 91.4],
[  98.5, 100.3]]

我也试着手动检查,32.87 FPS“几乎”适用于少数视频,但并不适用于所有视频。几乎意味着它的距离是10帧。这对于我的任务来说是一个巨大的不同,我需要精确的框架。

此外,必须有某种方式,因为它可以通过多个视频播放器直观地观察到,数据集中的时间是正确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-04 05:31:09

如果您的目标是提取与时间戳相对应的框架,请使用

代码语言:javascript
运行
复制
ffmpeg -i in.mp4 -vf select='lt(t,TS)*lt(TS-t,1/FPS)' -vsync 0 frame.png

应该用时间戳替换TS,用框架替换FPS,例如'lt(t,78.7)*lt(78.7-t,1/30)'

如果视频是可变帧的,那么帧索引是不可靠的。

票数 1
EN

Stack Overflow用户

发布于 2017-12-08 20:39:53

使用ffmpeg在给定的时间戳上获取帧的一个简单的精确方法是使用ffmpeg搜索-ss选项。如果这就是你要找的东西,你可以在这里找到描述- https://trac.ffmpeg.org/wiki/Seeking

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47625346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档