当前位置: 首页 > 知识库问答 >
问题:

使用FFMPEG选择最接近特定瞬间的关键帧

姚晋
2023-03-14

我想要做的是在第三分钟提取“最近”的关键帧--因为通常情况下,我用当前成功的代码提取的帧不是关键帧,因此模糊。

我知道有一种方法可以提取FFMPEG中的所有关键帧,但是有没有一种方法可以提取视频中最接近特定时间的关键帧呢?

共有1个答案

爱繁
2023-03-14

您可以使用选择过滤器来选择一个“i”帧(又名关键帧)。

 ffmpeg -ss 3:00 -i "my_video.mkv" -map 0:v:0 -filter:v "select=eq(pict_type\,I)" -vframes 1  3_min.jpg

在上面的示例中,我们将FFmpeg设置为:

  • 转到下一个输入的三分钟标记-ss 3:00
  • 定义输入-i“my_video.mkv”
  • 从第一个输入中选择:视频音轨:特别是第一个-map 0:v:0
  • 在视频上使用魔术选择过滤器-filter:v“select=eq(Pict_type\,I)”
  • 只从电影中获取单个帧-vframes 1
  • 定义保存图像的位置和格式(可以更改为.bmp.png等)3_min.jpg
 类似资料:
  • 问题内容: 我有一个表,用于存储带有时间点的值: 每天可能有很多值,一天中也可能只有一个值。现在,我想获取最接近给定时间的给定时间范围(例如一个月)中每一天的值。我只想每天获得一个值(如果有当天的记录),或者没有值(如果没有记录)。我的数据库是PostgreSQL。我对此很坚持。我可以获取时间跨度中的所有值,并以编程方式为每天选择最接近的值,但这将意味着从数据库中提取大量数据,因为一天中可能有很多

  • 这将从到获取所有i帧。 但是我想做的是给出一个帧号列表,并让ffmpeg提取出与每个帧号最接近的关键帧。有没有一种方法可以用ffmpeg来实现这一点,或者我必须在libavcodec上编写自己的程序来实现这一点?

  • 问题内容: 这可能比我做的要容易,但是基本上我需要做的是选择列中具有最接近数字的行作为指定值。例如: 数据库中指定列中的3行的值列表:10、15、16 如果我指定我想要最接近14的行,它将选择15的行。 另外,如果有2+行相同的距离,则随机选择其中之一。 问题答案: 一种选择是遵循以下方式: 要选择随机记录,可以将其添加到子句中。这种方法的缺点是您不能从索引中得到任何好处,因为您必须对派生值进行排

  • 我一直在努力解决教授给我的这个问题,但没有找到合适的解决方案。问题如下 问题:矩形电路板有两个平行的侧面,它们之间的宽度为W。板的上侧有m个端子,n个端子(n (a) 证明在最优解中,任意两条线段都不会相交。 (b) 设计一个O(mn)动态规划算法来解决这个最小化问题。您需要定义子问题,显示归纳公式、初始条件和伪代码。你可以用d(i,j)来表示U[i]和L[j]之间的距离,1≤ 我≤ m、 1个≤

  • 问题内容: 我正在尝试选择每个用户的最新付款。我现在的查询选择了用户的第一笔付款。即,如果用户进行了两次付款,并且s分别为10和11,则查询将选择具有付款ID 10而不是11的信息的用户。 我已添加,但查询似乎忽略了它,仍然选择了第一笔付款。 所有帮助表示赞赏。谢谢。 问题答案: 你要分组最大值 ; 本质上,将付款表分组以标识最大记录,然后将结果与其自身重新结合以获取其他列: 请注意,根据您的应用

  • 问题内容: Iam试图弄清楚数据是在大约5分钟内保存到数据库的。 是Unix时间戳(1970年以来的毫秒)。 不起作用,我得到null而不是0,如果我使用 要执行操作,代码不会进入循环。 我也试过了 问题答案: Current_timestamp以SQL TIMESTAMP(而不是UNIX时间戳)的形式返回当前日期,因此您必须使用unix_timestamp函数进行转换: 编辑: 由于您的列中包含