FFmpeg拼接图片及添加字幕时视频时长与时间戳异常问题排查
解决FFmpeg图片拼接时长超出及字幕匹配问题
1. 修正concat输入文件(根本解决时长问题)
你的input.txt中包含多余的文件条目,这是导致视频时长超出10秒的核心原因。只需保留需要的图片及对应时长即可:
file 'flower-red.jpg' duration 5 file 'flower-blue.jpg' duration 5
使用这个修正后的文件,无需添加-t 10参数,FFmpeg会严格按照定义的时长生成10秒的视频,避免后续无字幕的冗余内容。
2. 消除-safe 0提示
-safe 0提示仅在concat文件中使用绝对路径或跨目录路径时需要添加。如果你的图片文件都在当前工作目录下,直接移除-safe 0参数即可,命令无需额外修改,也不会出现该提示。
3. 一步生成带硬字幕的目标视频
无需分两次处理(先生成无字幕视频再添加字幕),可以直接在拼接图片的同时嵌入字幕,提升效率:
ffmpeg -f concat -i input.txt -vf "subtitles=subtitles.srt" -c:v libx264 -pix_fmt yuv420p output_hardsub.mp4 -y
该命令会直接生成10秒的带硬字幕视频,完全匹配你的字幕时间轴。
备选方案:不修改input.txt时强制截断时长
如果暂时无法修改input.txt,可以在命令中添加-t 10参数强制截断视频至10秒,同时完成字幕嵌入:
ffmpeg -f concat -i input.txt -t 10 -vf "subtitles=subtitles.srt" -c:v libx264 -pix_fmt yuv420p output_hardsub.mp4 -y
但这种方式只是临时截断,建议优先修正input.txt以避免潜在的处理问题。
内容的提问来源于stack exchange,提问作者silentsudo
相关产品推荐
相关产品推荐

