You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg制作图片幻灯片时长不一致问题及参数咨询

FFmpeg制作图片幻灯片时长不一致问题及参数咨询

嘿,我来帮你搞定这个FFmpeg幻灯片时长乱掉的问题!你的命令里其实藏着几个参数冲突和使用误区,导致部分图片显示时长不符合预期,下面给你拆解问题并给出解决方案:

为什么原命令会出问题?

你当前的命令同时用了-r 1/10(给concat解复用器设置输入帧率,意思是每10秒1帧)和-vf fps=8(强制输出帧率为8fps),这两个参数会互相干扰:

  • 原本-r 1/10应该让每张图停留10秒,但fps=8滤镜会把每1帧(对应一张图)重复成80帧(10秒×8fps),理论上时长应该正常,但如果你的listimages.txt里没明确指定每张图的停留时长,FFmpeg可能会错误读取图片的默认属性(比如部分图片的元数据被误判),导致时长混乱。
  • 另外,-r 1/10放在-f concat之后的位置,也没法正确作用于每个图片输入,反而容易触发FFmpeg的默认 fallback 逻辑,造成时长不一致。

解决方案一:修正concat解复用器的使用(适合图片命名无规律的情况)

首先修改你的listimages.txt,给每个图片条目加上duration 10,明确指定每张图显示10秒,格式如下:

file 'img001.jpg'
duration 10
file 'img002.jpg'
duration 10
file 'img003.jpg'
duration 10
...
file 'img150.jpg'
duration 10

然后使用简化后的命令(去掉冲突的-r 1/10和fps=8):

ffmpeg -f concat -i listimages.txt -crf 10 -vf format=yuv420p -c:v libx264 imageslides.mp4 -y

这里FFmpeg会严格按照你指定的duration来控制每张图的停留时间,输出帧率会默认使用适合H.264的数值(一般25或30fps),不影响你的10秒时长需求。

解决方案二:用image2解复用器更简单(适合图片按规律命名的情况)

如果你的150张JPG是按顺序命名的(比如img001.jpg到img150.jpg),直接用image2解复用器可以跳过列表文件,命令更简洁:

ffmpeg -r 1/10 -i img%03d.jpg -crf 10 -vf format=yuv420p -c:v libx264 imageslides.mp4 -y

-r 1/10直接告诉FFmpeg每10秒读取一张图片,这样每张图自然会停留10秒,完全不会出现时长混乱的问题。

额外提示

如果你确实需要输出8fps的视频,不要在滤镜里加fps=8,而是在输出时用-r 8,比如方案二的命令可以改成:

ffmpeg -r 1/10 -i img%03d.jpg -crf 10 -vf format=yuv420p -c:v libx264 -r 8 imageslides.mp4 -y

这样既保证每张图10秒,又能控制输出帧率为8fps。

备注:内容来源于stack exchange,提问作者Snowy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:23:13