如何用libav/avconv实现FFmpeg中tile滤镜的效果?
用avconv实现横向图片条拼接(替代ffmpeg tile滤镜)
嘿,刚好avconv的滤镜系统和ffmpeg的tile滤镜逻辑高度兼容,你完全可以直接用avconv自带的tile滤镜来完成横向图片条的拼接,步骤很简单:
1. 确认输入图片的命名规则
你已经用avconv -i video.mp4 -vf scale=320:-1,fps=1/10 -q:v 6 img%03d.jpg生成了按顺序命名的img001.jpg、img002.jpg...这类图片,这个命名格式刚好可以被avconv批量识别。
2. 核心拼接命令
假设你总共提取了N张图片(可以用ls img*.jpg | wc -l快速统计数量),直接用以下命令生成横向拼接的图片条:
avconv -i img%03d.jpg -vf "tile=Nx1" -q:v 6 output.jpg
- 参数解释:
tile=Nx1:N替换为你的图片总数,1代表只排1行(实现横向排列);如果想让avconv自动适配列数,也可以用tile=cols=0:rows=1(部分avconv版本支持,会自动按1行来计算所需列数)-q:v 6:和你提取图片时的质量参数一致,保证拼接后的图片质量匹配output.jpg:最终生成的横向图片条文件名
3. 额外优化:强制统一图片尺寸
虽然你提取时已经用scale=320:-1统一了宽度,但如果担心个别图片尺寸异常,可以在tile滤镜前再加一次scale来强制统一:
avconv -i img%03d.jpg -vf "scale=320:-1,tile=Nx1" -q:v 6 output.jpg
补充说明
avconv的tile滤镜和ffmpeg的tile滤镜实现逻辑基本一致,都是将多个输入帧/图片按指定的行列布局拼接成单张图片,完全可以替代ffmpeg的tile用法来完成你的需求。
内容的提问来源于stack exchange,提问作者Mathjoh
相关产品推荐
相关产品推荐

