【问题标题】:How to display image for particular time in a video using ffmpeg如何使用ffmpeg在视频中显示特定时间的图像
【发布时间】:2020-02-15 02:07:22
【问题描述】:

我正在尝试从图像序列中创建视频。但我必须以不同的秒数显示每个图像。如何用 FFMPEG 做到这一点。

提前致谢。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    FFmpeg wiki 中有一些提示。这一个示例(在 wiki 中倒数第二个)可能特别适合您的需求:

    ffmpeg -loop 1 -f image2 -i img.png -c:v libx264 -t 30 out.mp4
    

    -t 后面的数字(示例中为 30)是视频的持续时间,以秒为单位。

    只需像这样多次执行该命令:

    ffmpeg -loop 1 -f image2 -i intro.png -c:v libx264 -t 5 out1.mp4
    ffmpeg -loop 1 -f image2 -i someimage.png -c:v libx264 -t 15 out2.mp4
    ffmpeg -loop 1 -f image2 -i someotherimage.png -c:v libx264 -t 25 out3.mp4
    ffmpeg -loop 1 -f image2 -i outro.png -c:v libx264 -t 10 out4.mp4
    

    然后合并生成的视频(如果需要):

    1. 创建一个列出视频文件名的文本文件(例如:videos.txt)。

      file 'out1.mp4'
      file 'out2.mp4'
      file 'out3.mp4'
      file 'out4.mp4'

    2. 运行此命令(如果需要更改文件名)

      ffmpeg -f concat -i videos.txt -c copy final_video.mp4

    有关视频合并(串联)的更多信息,请参阅wiki

    【讨论】:

    • 这是最好的方法吗?
    • 您可以避免创建要连接的文件列表。事实上,您可以使用命名管道完全避免创建临时文件。两者都简明扼要地解释在这里:trac.ffmpeg.org/wiki/Concatenate
    • @MageProspero 不,不是,看看我的回答。
    【解决方案2】:

    ffmpeg 包含一个关于此的部分:https://trac.ffmpeg.org/wiki/Slideshow

    这是一个例子:

    input.txt的示例内容:

    file '/path/to/dog.png'
    duration 5
    file '/path/to/cat.png'
    duration 1
    file '/path/to/rat.png'
    duration 3
    file '/path/to/tapeworm.png'
    duration 2
    file '/path/to/tapeworm.png'
    

    然后运行:

    ffmpeg -f concat -i input.txt -vsync vfr -pix_fmt yuv420p -framerate 30 output.mp4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多