【问题标题】:Get the second on which the thumbnail was generated获取生成缩略图的第二个
【发布时间】:2018-06-24 14:35:49
【问题描述】:

我使用以下命令每 5 秒从视频中生成缩略图:

ffmpeg -ss 3 -i input.mp4 -vf "select=gt(scene\,0.4),scale=640:360" 
   -vsync vfr -vf fps=fps=1/5 out%02d.jpg

生成的缩略图使用 2 位数字进行格式化。因此图像从out01.jpgout02.jpg 开始生成,一直持续到out99.jpg。有没有办法获得文件名中的秒数?就像我想知道生成任何特定缩略图时原始视频中经过的秒数。

例如,它的格式可能类似于:

out01_23.jpg
out02_28.jpg
out03_33.jpg

.  
.

所以这里的 23,28 和 33 代表视频中经过的秒数。 out01_33.jpg 是代表视频第 33 秒的缩略图。

有没有办法得到这个?

【问题讨论】:

    标签: video ffmpeg


    【解决方案1】:

    你可以使用

    ffmpeg -i input.mp4 -vsync 0 -vf select='gte(t,3)*not(mod(t-3,5))' -frame_pts 1 fr\out%02d.jpg
    

    30-fps 视频的输出文件名将是

    out90.jpg
    out240.jpg
    out390.jpg
    ...
    

    其中 90 代表90/30 == 3.00 输入的秒数; 240/30 == 8.00 秒等。

    【讨论】:

    • 这会引发错误Missing ')' or too many args in 'gte(t'
    • 转义逗号,例如t, -> t\,
    • 好的。这与我之前使用的命令有何不同?我看到它遗漏了很多参数,例如 select=gt(scene\,0.4),scale=640:360-vsync vfr -vf fps=fps=1/5
    • 还有。如果视频帧速率不是 30fps 会怎样?你能解释一下吗
    • -vf select='gte(t,3)*not(mod(t-3,5))' 在 3.0、8.0、13.0.. 等秒处选取一帧。 -vsync 0 保留您的目的所需的源时间戳。 -frame_pts 1 在输出文件名中编码时间戳。
    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2013-11-23
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多