gpt4 book ai didi

ffmpeg:在视频的 % 位置选择帧

转载 作者:行者123 更新时间:2023-12-04 00:54:13 25 4
gpt4 key购买 nike

我正在尝试创建视频的 2x2 平铺缩略图,其中包含视频中 20%、40%、60% 和 80% 的帧。我看到我需要使用带有选择的视频过滤器,但无法确定哪些选项可以做到这一点。我想做这样的事情:

ffmpeg -i video.avi -frames 1 -vf "select=not(mod(pos\,0.2)),tile=2x2" tile.png

其中位置将是视频中从 0.0 到 1.0 的位置。我该怎么做,或者我有什么选择?

最佳答案

  • 方法一:帧间隔

    这可能需要一些时间,具体取决于输入或返回 N/A对于某些类型的输入(在这种情况下,请参见基于持续时间的方法)。

    获取video的总数框架:
    ffprobe <input> -select_streams v -show_entries stream=nb_frames -of default=nk=1:nw=1 -v quiet

    该命令将输出一个整数值,例如:
    18034

    对于上面的示例,帧间隔是 nb_frames / 5 = 18034 / 5 = 3607
    最后是ffmpeg命令是:
    ffmpeg -i <input> -filter:v "select=(gte(n\,3607))*not(mod(n\,3607)),tile=2x2" -frames:v 1 -vsync vfr -y tile.png
  • 方法 2:持续时间间隔

    与上述相同的想法,但使用以秒为单位的持续时间。这也可能需要一段时间,并且报告的持续时间可能无效(例如:如果文件被截断)。
    ffprobe <input> -select_streams v -show_entries stream=duration -of default=nk=1:nw=1 -v quiet

    它返回一个真实的值,如:
    601.133333

    您的时间间隔是 601 / 5 ~= 120秒:
    ffmpeg -i <input> -filter:v "select=(gte(t\,120))*(isnan(prev_selected_t)+gte(t-prev_selected_t\,120)),tile=2x2" -frames:v 1 -y tile.png
  • 方法三:寻找提取

    使用 -ss -i 查找特定时间,提取单帧并使用 imagemagick 的 montage创建磁贴。

    10 分钟倒数计时器的示例输出:

    enter image description here
  • 关于ffmpeg:在视频的 % 位置选择帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043680/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com