FFmpeg生成延时视频报错求助:pipe:: Invalid data found when processing input
解决FFmpeg管道拼接图片报错的问题
原命令报错的核心原因是:FFmpeg从标准输入读取数据时,未被指定输入格式,无法识别拼接后的图片二进制数据,因此抛出pipe:: Invalid data found when processing input错误。
以下是两种可行的修复方案:
方案1:直接让FFmpeg读取排序后的图片序列(推荐)
无需通过管道传递,直接利用FFmpeg的文件名匹配功能,结合你生成的yyyy-mm-dd-hh-mm格式文件名(天然符合字典序),自动按时间顺序读取:
ffmpeg -framerate 10 -i "%Y-%m-%d-%H-%M.jpg" -vcodec libx264 -pix_fmt yuv420p -r 20 outputvideo.avi
- 替换
jpg为你实际生成的图片格式(如png)即可
方案2:保留管道并指定输入格式
如果坚持用管道传递图片数据,需添加-f image2pipe参数,明确告知FFmpeg输入是图片流:
cat $(ls | sort -V) | ffmpeg -framerate 10 -f image2pipe -i - -vcodec libx264 -pix_fmt yuv420p -r 20 outputvideo.avi
- 也可简化排序逻辑,用
ls -v直接按版本号(此处对应时间顺序)排序:
ls -v *.jpg | xargs cat | ffmpeg -framerate 10 -f image2pipe -i - -vcodec libx264 -pix_fmt yuv420p -r 20 outputvideo.avi
额外注意事项
- 确保所有图片的分辨率、像素格式完全一致,否则FFmpeg可能出现拼接失败
- 若生成的是无损格式图片(如png),上述方案仍能正常工作,无需额外调整参数
内容的提问来源于stack exchange,提问作者Landonorris0001
相关产品推荐
相关产品推荐

