使用 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 并提供每个帧的持续时间。
制作包含输入路径和每个输入持续时间的文本文件:
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
然后运行 ffmpeg
:
ffmpeg -f concat -i input.txt -pix_fmt yuv420p -movflags +faststart output.mp4
备注:
有关详细信息,请参阅 concat demuxer documentation。
该示例不适用于旧的 ffmpeg
,因此请确保先 download 最近的构建,因为 FFmpeg 开发非常活跃。
我有一组图像,我试图从中创建幻灯片放映。在此 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 并提供每个帧的持续时间。
制作包含输入路径和每个输入持续时间的文本文件:
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
然后运行
ffmpeg
:ffmpeg -f concat -i input.txt -pix_fmt yuv420p -movflags +faststart output.mp4
备注:
有关详细信息,请参阅 concat demuxer documentation。
该示例不适用于旧的
ffmpeg
,因此请确保先 download 最近的构建,因为 FFmpeg 开发非常活跃。