【问题标题】:Animation from large number of jpg files来自大量 jpg 文件的动画
【发布时间】:2016-01-06 23:24:41
【问题描述】:

我在一个目录中有超过 100,000 张 jpg 图像,我想从这些文件中创建动画。这些文件按从 file1 到 file125000 的顺序编号。我曾尝试使用 ImageMagick 和许多其他免费工具,但没有奏效。 3小时后,imagemagick报错,说文件数太大。有没有可以处理这个的工具(Windows)?

【问题讨论】:

    标签: animation imagemagick jpeg


    【解决方案1】:

    您可以将 ffmpeg 与这样的命令一起使用:

    ffmpeg.exe -f image2 -r 30 -i image%06d.jpg -codec:v libx264 -crf 23 video.mp4
    

    ffmpeg 命令行的结构如下:

    ffmpeg [input params] -i <input> [output params] <output>
    

    输入参数为:

    • -f:用于强制输入或输出格式。在我的示例中,用于指示输入文件旨在被解析为 image2,这是一种内部 ffmpeg 格式,可用于使用模式指定多个图像;
    • -r:可用于在输入或输出上强制帧速率。如果仅用于输入,则继承输出帧率。
    • -i image%06d.jpg:此标志指定读取所有 6 个整数位的图像,前导零填充(从 image000000.jpgimage999999.jpg )。当然 ffmpeg 会在最后一个现有文件处停止。

    其他参数用于指定输出格式和视频编解码器。特别是:

    • -codec:v libx264:指定视频编解码器(x264 使用 libx264)
    • -crf 23:该参数是x264编码器特有的,用于指定Constant RateFactor,影响输出码率等。
    • video.mp4:如果未指定,FFMpeg 会尝试从输出文件名中猜测输出格式。在我的示例中,我使用了 .mp4,因此 FFmpeg 将使用 libx264 编码器和 MP4 格式对视频进行编码。

    FFMpeg windows build 可以从 zeranoe 下载

    编辑:如果您的图像名称没有前导零,请尝试使用 file%6d.jpg 而不是 file%06d.jpg 作为输入文件名(不带 0)。

    【讨论】:

    • 与其给一个男人一条鱼当晚饭,不如教我们如何捕鱼,这样我们自己就可以了;-) 我可以看到-r 30 的帧速率可能是30 fps,-i image%06d 可能会选择一堆输入图像,但 -f image2-crf 23 呢?
    • 我更喜欢保持简单的回答。解释 ffmpeg 可能超出主题......但我正在编辑我的答案,添加有用的信息。
    • 太棒了!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2014-02-12
    • 2019-10-09
    相关资源
    最近更新 更多