使用 FFmpeg 连接具有不同时间距离的图像

Using FFmpeg to join images with different timly distance

我有一组图像,我试图从中创建幻灯片放映。在此 website 上,我发现了以下命令:

ffmpeg -framerate 1/5 -start_number 126 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

我让它运行良好。但就我而言,我需要让每个图像显示不同的时间段。我怎样才能做到这一点?

所以我很久以前就问过这个问题,现在还没有答案。我自己也没找到。我通过为指向正确图像的每个帧创建符号 links 来解决我的任务。然后我将帧率设置为 1。所以每一秒我都想显示一个图像,我有一个符号 link 指向它。

当然也可以只复制相应的文件。根据视频的总帧数,这可能会导致使用大量磁盘 space。所以我选择了 links.

您可以尝试使用 concat demuxer 并提供每个帧的持续时间。

  1. 制作包含输入路径和每个输入持续时间的文本文件:

    file '/path/to/image0.png'
    duration 2
    file '/path/to/image1.png'
    duration 5
    file '/path/to/image2.png'
    duration 1.5
    file '/path/to/image3.png'
    duration 4
    
  2. 然后运行 ffmpeg:

    ffmpeg -f concat -i input.txt -pix_fmt yuv420p -movflags +faststart output.mp4
    

备注:

  • 有关详细信息,请参阅 concat demuxer documentation

  • 该示例不适用于旧的 ffmpeg,因此请确保先 download 最近的构建,因为 FFmpeg 开发非常活跃。