【问题标题】:how to convert 1,000,000 gifs into a video file using ffmpeg如何使用 ffmpeg 将 1,000,000 个 gif 图像转换为视频文件
【发布时间】:2015-03-14 12:53:47
【问题描述】:

我在一个文件夹中有 100 万个 gif,我想使用 ffmpeg 将其转换为每秒 60 帧的视频文件。这是我的代码:

ffmpeg -r 60 -pattern_type glob -i *.gif -c:v libx264 out.mp4

我的 gif 不遵循 0000001.gif 0000002.gif 之类的 %07d.gif 模式,但它们确实是按顺序排列的。像这样:img1.gif,img2.gif ... img10.gif ... img10000.gif ... img1000000.gif。

当我尝试执行我的代码时,我得到了这个:

-bash: /usr/local/bin/ffmpeg: Argument list too long

请帮忙。谢谢。

【问题讨论】:

    标签: bash ffmpeg


    【解决方案1】:

    您需要避免命令外壳扩展模式,而是将其按原样传递给程序。这可以通过引号来实现。

    手册页有这个例子

     ffmpeg -r 10 -f image2 -i 'img-%03d.jpeg' out.avi
    

    所以你可以试试

     ffmpeg -r 60 -i '%07d.gif' -c:v libx264 out.mp4
    

    【讨论】:

    • 然后试试img%d.gif
    • 还是不喜欢 - img%d.gif: 没有这样的文件或目录
    【解决方案2】:

    shell 正在给定命令行上执行文件名扩展,即*.gif。 看看here 如何使用引号来防止它。

    此外,序列模式类型在您的情况下看起来更有用。像下面这样的东西应该可以工作:

    ffmpeg -r 60 -pattern_type sequence -i "img%d.gif" -c:v libx264 out.mp4
    

    如果我理解正确,通配符的问题在于它会按字母顺序对文件进行排序,即 img-1.gif、img10.gif、...、img2.gif、img20.gif...

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 2014-12-16
      • 2014-03-02
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多