如何使用ffmpeg将单张静态图片制作成带高度从0到100%展开动画的透明WebM视频
使用FFmpeg生成从上到下展开的透明WebM视频
你的示例原图如下:

目标展开效果参考:
实现命令
将命令中占位符替换为你自己的参数后直接运行即可:
ffmpeg -loop 1 -i 你的输入图片路径.png -filter_complex \ "[0:v]crop=w=iw:h='min(ih, ih * t / 视频总时长)':x=0:y=0,format=rgba[out]" \ -map "[out]" -t 视频总时长 -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 输出文件路径.webm
举个实际使用的例子,如果你的输入图是test.png,想要5秒完成展开效果,输出为result.webm,命令如下:
ffmpeg -loop 1 -i test.png -filter_complex \ "[0:v]crop=w=iw:h='min(ih, ih * t / 5)':x=0:y=0,format=rgba[out]" \ -map "[out]" -t 5 -c:v libvpx-vp9 -pix_fmt yuva420p -auto-alt-ref 0 result.webm
参数说明
-loop 1:让静态输入图片持续循环,匹配输出视频的时长- 动态裁剪逻辑:通过
crop滤镜随时间调整裁剪高度,始终从顶部开始裁剪,高度从0逐步增长到原图全高,未裁剪到的区域默认保持透明,不会出现滚动效果;如果播放器不支持透明通道预览,未展开的透明区域会显示为黑色,和要求的效果一致 - 输出参数:使用VP9编码输出带透明通道的WebM格式,
-pix_fmt yuva420p开启alpha通道,-auto-alt-ref 0为VP9编码支持透明通道的必填参数
内容的提问来源于stack exchange,提问作者Xiang Chen
相关产品推荐
相关产品推荐

