ffmpeg 透明圆形
时间: 2024-12-31 21:29:22 浏览: 8
### 使用 FFmpeg 创建带有透明圆形区域的视频或图像
为了实现这一目标,可以通过组合多个滤镜来完成。具体来说,`colorkey` 滤镜可用于定义特定颜色作为透明度键,而 `geq` 或者自定义着色器可以用来绘制圆圈并设置其内部为指定颜色。
下面提供了一个具体的命令实例:
```bash
ffmpeg -i input.png \
-vf "
color=c=black@0.0:s=720x480[base];
[base][0]scale2ref[img][vid];
[vid]split[v1][v2];
[v1]format=rgba,lutrgb=r=val*0:g=val*0:b=val*0,colorkey=black:0.1:0.2,format=argb[circle];
[circle][v2]overlay=(W-w)/2:(H-h)/2,
geq='if(gt((X-(W/2))^2+(Y-(H/2))^2,(W/2)^2), NAN, 255)':128:128"
-output.png
```
此脚本执行的操作如下:
- 首先创建一个黑色背景画布 `[base]`;
- 将输入图片调整到与新画布相同大小并与之关联 `[img]` 和 `[vid]`;
- 对副本之一应用一系列变换以形成带孔洞效果(即去除中心部分),其中心位置被设为完全不透明白色 `[circle]`;
- 最终将处理过的图层叠加回原图上,并通过条件表达式限定仅保留圆形范围内的像素值[^1]。
对于视频文件,则只需替换 `-i input.png` 及相应输出格式即可转换成连续帧操作模式。
另外,在某些情况下可能还需要考虑色彩空间的影响。如果源素材采用 YUV 编码而非 RGB ,则应适当调整上述指令中的色彩通道名称以及数值范围[^5]。
阅读全文