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

使用ffmpeg制作视频时如何处理图片序列的缺失帧问题

解决方案

方案1:最小改动原命令(推荐优先尝试)

仅添加2个参数即可实现缺失帧自动跳过,无需调整原有命令的其他逻辑:

ffmpeg -framerate 30 -start_number 11 -f image2 -ignore_errors 1 -fflags +genpts -i image-%d.jpeg -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" movie.mp4

参数说明:

  • -f image2 -ignore_errors 1:让输入模块忽略文件不存在这类IO错误,碰到缺失帧直接跳过继续读取后续序号的文件
  • -fflags +genpts:自动生成正确的时间戳,避免缺失帧导致的视频时长、帧率异常

方案2:通配符匹配现有文件(适合序号不连续场景)

用glob模式直接匹配文件夹内所有符合命名规则的现有图片,自动按文件名排序读取,完全不关心缺失的序号:

# Linux/macOS 可用
ffmpeg -framerate 30 -f image2 -pattern_type glob -i 'image-*.jpeg' -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" movie.mp4

注意:如果你的文件名序号无补零(比如同时存在image-1.jpeg、image-10.jpeg),该方案会出现排序错误,建议使用方案3。

方案3:预生成文件列表(最稳定,适配10万级大数量文件场景)

提前把所有存在的图片按数字序号从小到大排序,生成ffmpeg支持的concat列表后再生成视频,不会出现排序错误,大数量文件处理性能稳定:

步骤1:生成文件列表

  • Linux/macOS执行:
ls -1 image-*.jpeg | sort -n -t '-' -k2 | awk '{print "file \047" $0 "\047\nduration 0.0333333"}' > img_list.txt
  • Windows PowerShell执行:
Get-ChildItem image-*.jpeg | Sort-Object { [int]($_.Name -replace 'image-(\d+)\.jpeg','$1') } | ForEach-Object { "file '$($_.FullName)'`nduration 0.0333333" } | Out-File img_list.txt -Encoding utf8

步骤2:调用ffmpeg生成视频

ffmpeg -f concat -safe 0 -i img_list.txt -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -r 30 movie.mp4

内容的提问来源于stack exchange,提问作者TheCodeNovice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:12:00