【问题标题】:ffmpeg - multiple output with thumbnailsffmpeg - 带有缩略图的多个输出
【发布时间】:2017-04-24 10:45:09
【问题描述】:

我希望 ffmpeg 执行以下操作:

  • 读取输入的 mp4 (-i movie.mp4)
  • 跳过前 5 秒 (-ss 5)
  • 查找场景变化并显示帧号(-vf "select=gt(scene\, 0.4, showinfo))
  • 输出 #1 - 一个 gif 文件 (output.gif)
  • 输出 #2 - 包含所有缩略图的联系表(-vf "select scale=320:-1, tile=12x200" thumbnails.png)

这将生成缩略图:

ffmpeg -hide_banner -i d:/Test/movie01.mp4 -ss 5 -vf "select=gt(scene\,0.4), showinfo, scale=320:-1, tile=12x200" -vsync 0 thumbnails%03d.png

这将生成 gif:

ffmpeg -hide_banner -i d:/Test/movie01.mp4 -ss 5 -vf "select='not(mod(n,60))',setpts='N/(30*TB)', scale=320:-1" -vsync 0 output.gif

我想同时使用另外 2 个功能:

  • 为 gif 设置 fps 和分辨率;我希望 gif 在 X 秒内以 Y fps 表示整部电影(我知道输入电影的持续时间,因此我可以计算需要捕获一帧的频率)

  • 仅为缩略图设置宽度(例如tile=12),让ffmpeg确定合适的高度

我尝试根据我在此页面上阅读的内容编写命令行:https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs,使用 split / map 命令,但我无法让它工作

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    使用

    ffmpeg -ss 5 -i input.mp4
    -vf "select='not(mod(n,60))',setpts=N/Y/TB',scale=320:-1" -r Y output.gif
    -vf "select='gt(scene\,0.4)',showinfo,scale=320:-1,tile=12x200" -vsync 0 thumbnails%03d.png
    

    tile 需要同时设置 W 和 H。

    【讨论】:

    • 好的,我真的不明白你可以像这样链接输出;这很有帮助!对于 gif,我该如何设置才能使 gif 为 X 秒,而这些秒中的每一秒都有 Y 帧?例如,我可能想要一个 5 秒的 gif,每秒有 3 帧,将整部电影压缩为 15 帧。
    • 60 应替换为以下值:`我可以计算需要捕获帧的频率`
    • 我理解那部分,但我如何确保我的 gif 每秒有特定的帧数?我见过-r选项,-fps选项,不知道有什么区别
    • setpts 和r 负责处理这一点。 r 在最后应用并影响输出。 fps 作为过滤器可以在任何阶段应用于特定输入。当前的命令很好。
    • 哦,最后一个问题:在 setpts=N/Y/TB 中,所以 Y 是最后我想要的总帧数,但是 N 和 TB 呢?
    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2016-01-14
    • 2018-12-21
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多