如何在ffmpeg脚本中匹配Var_*m.jpg格式图像文件生成MP4视频
ffmpeg匹配非固定长度数字前缀文件名的方法
首先明确:你提到的Var_???m.jpg通配符不可用
?是单字符匹配符,三个?仅能匹配Var_后刚好跟3个字符的文件名,你的文件里Var_1m.jpg在Var_后只有2个字符(1和m)、Var_11m.jpg有3个字符,长度不统一,完全无法覆盖所有目标文件。
两种可行的匹配方案
方案1:glob通配符匹配(适合Linux/macOS环境,排序要求不高的场景)
ffmpeg原生支持glob模式匹配任意前缀后缀的文件,直接用*匹配中间长度不固定的数字部分即可,命令示例:
ffmpeg -framerate 24 -pattern_type glob -i "Var_*m.jpg" -c:v libx264 -pix_fmt yuv420p output.mp4
注意:glob默认按字符顺序排序,会出现
Var_1m.jpg排在Var_11m.jpg之后的错乱问题,如果要求严格按数字大小排序,优先用方案2。
方案2:文件列表导入(全平台兼容,支持自定义排序)
先把所有目标文件按你需要的顺序生成ffmpeg可识别的列表文件,再调用ffmpeg读取列表合成视频,步骤如下:
- 生成按数字大小排序的文件列表,Linux/macOS下命令示例:
ls Var_*m.jpg | sort -t '_' -k2 -n | awk '{print "file \047"$0"\047"}' > files.txt
- 调用ffmpeg读取列表合成视频:
ffmpeg -framerate 24 -f concat -safe 0 -i files.txt -c:v libx264 -pix_fmt yuv420p output.mp4
Windows环境下可以手动整理列表,或者用PowerShell命令生成符合要求的files.txt即可。
内容的提问来源于stack exchange,提问作者Leon。
相关产品推荐
相关产品推荐

