在 Windows 上快速生成带透明通道的 WebM(VP9 Alpha)。项目提供两种使用方式:
- After Effects 可停靠面板:选择当前合成,一键渲染并转换为透明 WebM。
- 拖拽 BAT:把已经带 Alpha 的 AVI 拖到批处理文件上直接转换。
本项目不打包 FFmpeg。请自行安装或选择现有的
ffmpeg.exe。
| 文件 | 用途 |
|---|---|
AE插件 透明WebM导出.jsx |
After Effects ScriptUI 面板 |
AVI_to_Transparent_WebM.bat |
AVI 拖拽转换工具 |
LICENSE |
Unlicense 许可证 |
| 功能 | AE 面板 | BAT |
|---|---|---|
| 当前合成一键导出 | ✅ | — |
| 拖拽 AVI 转换 | — | ✅ |
| VP9 WebM | ✅ | ✅ |
| 保留 Alpha 透明通道 | ✅ | ✅ |
| 质量档位 | CRF 20 / 28 / 34 | 固定 CRF 28 |
| 自定义保存位置 | ✅ | 与 AVI 同目录 |
| 完成后打开文件夹 | ✅ | — |
| 自动寻找 FFmpeg | ✅ | ✅ |
| 提供 FFmpeg 下载入口 | ✅ | — |
- Windows 10 或更高版本
- FFmpeg,且包含
libvpx-vp9 - 使用 AE 面板时,需要 Adobe After Effects 和 ExtendScript / ScriptUI 支持
FFmpeg 下载:
下载并解压后,需要选择或使用:
ffmpeg-版本号-essentials_build\bin\ffmpeg.exe
在 After Effects 中打开:
编辑 → 首选项 → 脚本和表达式
启用:
允许脚本写入文件和访问网络
在 AE 中选择:
文件 → 脚本 → 运行脚本文件…
然后选择 AE插件 透明WebM导出.jsx。面板会以浮动窗口运行,不需要安装。
把 JSX 文件复制到当前 AE 版本的面板目录:
C:\Program Files\Adobe\Adobe After Effects <版本>\Support Files\Scripts\ScriptUI Panels\
例如 AE 2024:
C:\Program Files\Adobe\Adobe After Effects 2024\Support Files\Scripts\ScriptUI Panels\
重启 AE,然后从“窗口”菜单打开 AE插件 透明WebM导出。
- 在项目面板或时间线中选中一个合成。
- 选择输出位置。
- 选择质量档位:
- 高清:CRF 20
- 推荐:CRF 28
- 小体积:CRF 34
- 保持“保留透明通道”开启。
- 点击“一键导出 WebM”。
面板的处理流程:
当前合成
→ AE 渲染 RGB + Alpha 临时 AVI
→ FFmpeg 编码 VP9 Alpha WebM
→ 验证输出
→ 删除临时文件
面板不会携带 FFmpeg。它会尝试寻找系统中现有的 ffmpeg.exe;未找到时,可以手动选择或打开下载入口。
任选一种:
- 将 FFmpeg 的
bin目录加入系统PATH;或 - 把
ffmpeg.exe放在AVI_to_Transparent_WebM.bat同一目录。
把带 Alpha 的 AVI 文件拖到:
AVI_to_Transparent_WebM.bat
脚本会在 AVI 所在目录生成:
原文件名_alpha.webm
BAT 使用的主要参数:
-c:v libvpx-vp9
-pix_fmt yuva420p
-crf 28
-b:v 0
-auto-alt-ref 0
输入内容必须本身带有真实 Alpha 通道。本项目只能保留已有透明信息,不能自动把黑色或其他纯色背景抠成透明。
在 AE 中请避免添加覆盖整个画面的背景图层,并确保中间输出模块使用:
通道:RGB + Alpha
颜色:Straight (Unmatted) / 直接(无遮罩)
部分播放器不支持 WebM Alpha,播放时可能显示为黑色背景。这不一定表示文件丢失了透明通道,请在支持 WebM Alpha 的浏览器、软件或目标平台中确认。
- 检查 JSX 是否放入了
Scripts\ScriptUI Panels。 - 确认使用的是当前 AE 版本对应的安装目录。
- 复制文件后完全重启 AE。
- 点击面板中的选择按钮。
- 选择解压目录下的
bin\ffmpeg.exe,不要只选择bin文件夹。 - 或将 FFmpeg 的
bin目录加入系统PATH。
- 确认原始 AVI 或 AE 合成确实包含透明区域。
- 确认没有背景图层覆盖画面。
- 确认 AE 输出模块为
RGB + Alpha和Straight (Unmatted)。 - 换一个支持 WebM Alpha 的播放器或平台检查。
通常是 Alpha 预乘方式不正确。请在 AE 输出模块中使用 Straight (Unmatted),不要使用带黑色遮罩的 Premultiplied 输出。
ToWebM/
├─ AE插件 透明WebM导出.jsx
├─ AVI_to_Transparent_WebM.bat
├─ README.md
└─ LICENSE
当前转换命令核心参数:
-c:v libvpx-vp9 -pix_fmt yuva420p -crf 28 -b:v 0 -auto-alt-ref 0
当前:
-crf 28
这是最主要、最建议调整的参数。
CRF 范围:
0 ~ 63
规律:
CRF 越小 = 画质越高 = 文件越大
CRF 越大 = 压缩越强 = 文件越小
推荐使用范围:
| CRF | 画质/压缩程度 | 推荐用途 |
|---|---|---|
| 18 | 极高画质 | 高质量成品、细节较多 |
| 20 | 很高画质 | 对边缘、透明效果要求高 |
| 22 | 高画质 | 推荐高质量输出 |
| 24 | 高质量均衡 | 推荐 |
| 26 | 均衡 | 画质和体积兼顾 |
| 28 | 较强压缩 | 当前 BAT 设置 |
| 30 | 小体积 | 网页动画、普通素材 |
| 32 | 更小体积 | 对文件大小要求较高 |
| 34~36 | 强压缩 | 可能明显损失细节 |
| 40以上 | 极强压缩 | 通常不建议正式使用 |
例如:
-crf 20 高画质,文件较大
-crf 24 高质量,比较均衡
-crf 28 当前设置,明显偏向小体积
-crf 32 更小体积,画质损失增加
注意:
CRF 不是“压缩百分比”。
例如设置 CRF 28,并不代表“压缩 28%”。
同样是 CRF 28:
94 MB MOV → 1.5 MB WebM
另一个 94 MB MOV → 5 MB WebM
都是正常情况,因为最终大小还与画面变化量、透明区域、噪点、分辨率、帧率等有关。
当前:
-b:v 0
配合:
-crf 28 -b:v 0
表示主要按照 CRF 画质进行编码,不指定固定的视频目标码率。
如果主要目标是:
保证画质,让文件多大算多大
建议保持:
-b:v 0
不要修改。
如果改成:
-b:v 500k
-b:v 1M
-b:v 2M
-b:v 4M
则会开始对视频码率进行控制。
大致含义:
| 设置 | 目标码率 | 特点 |
|---|---|---|
500k |
0.5 Mbps | 非常小,复杂画面容易糊 |
1M |
1 Mbps | 小体积 |
2M |
2 Mbps | 中等 |
4M |
4 Mbps | 较高质量 |
8M |
8 Mbps | 高码率 |
如果已经使用 CRF 控制画质,一般建议继续:
-b:v 0
由 CRF 决定最终大小。
当前:
-pix_fmt yuva420p
其中:
YUV = 视频颜色数据
A = Alpha 透明通道
420 = 色度使用 4:2:0 采样
yuva420p 包含 Alpha 透明通道。FFmpeg 将其定义为带 Alpha 的平面 YUV 4:2:0 像素格式。
对于需要浏览器、网页、游戏/UI 等环境播放的透明 WebM:
建议保持 yuva420p
这个参数不建议作为日常压缩大小调节项。
当前:
-auto-alt-ref 0
建议透明视频继续保持:
-auto-alt-ref 0
它不是主要的“压缩率控制参数”。
对于这个 BAT 的用途,建议不要让普通用户修改。
当前 BAT:
没有修改分辨率
因此输出 WebM 与原视频保持原始尺寸。
例如源视频:
1920 × 1080
输出仍然是:
1920 × 1080
如果需要进一步降低文件大小,可以加入缩放。
例如缩小到原来的 75%:
-vf "scale=trunc(iw*0.75/2)*2:trunc(ih*0.75/2)*2"
缩小到原来的 50%:
-vf "scale=trunc(iw*0.5/2)*2:trunc(ih*0.5/2)*2"
建议提供:
| 设置 | 分辨率 | 影响 |
|---|---|---|
| 100% | 原始 | 画面最清晰 |
| 75% | 宽高各为 75% | 文件明显减小 |
| 50% | 宽高各为 50% | 文件大幅减小 |
需要注意:
分辨率降低属于非常直接的画质损失。
如果最终播放尺寸本身比较小,可以降低分辨率;如果需要全尺寸显示,则建议保持原始分辨率。
当前 BAT:
没有指定 -r
因此一般保持原视频帧率。
可以手动指定:
-r 60
-r 30
-r 24
-r 20
-r 15
例如:
-r 30
表示输出 30 FPS。
推荐:
| 帧率 | 适合用途 |
|---|---|
| 60 FPS | 高流畅动画 |
| 30 FPS | 常规动画,推荐 |
| 24 FPS | 普通动画 |
| 20 FPS | 对流畅度要求不高 |
| 15 FPS | 极度追求小体积 |
降低帧率通常可以进一步降低体积,但动态画面的流畅度也会下降。
如果原视频本来就是 30 FPS,则没有必要设置成 60 FPS。
可以额外添加:
-cpu-used 2
这个参数主要影响:
编码速度 ↔ 压缩效率
可以简单使用:
| 设置 | 编码速度 | 压缩效率 |
|---|---|---|
| 0 | 很慢 | 较高 |
| 1 | 慢 | 高 |
| 2 | 较慢 | 较高 |
| 3 | 均衡 | 推荐 |
| 4 | 较快 | 一般 |
| 5 | 快 | 较低 |
| 6 | 很快 | 较低 |
一般推荐:
-cpu-used 2
或:
-cpu-used 3
如果只是临时快速转换,可以:
-cpu-used 5
cpu-used 并不是直接控制画质的参数,它主要决定编码器愿意花多少时间寻找更有效的压缩方式。
-c:v libvpx-vp9 -pix_fmt yuva420p -crf 20 -b:v 0 -cpu-used 2 -auto-alt-ref 0
-c:v libvpx-vp9
-pix_fmt yuva420p
-crf 20
-b:v 0
-cpu-used 2
-auto-alt-ref 0
特点:
画质优先
透明边缘和细节保留较好
文件相对较大
-c:v libvpx-vp9 -pix_fmt yuva420p -crf 24 -b:v 0 -cpu-used 3 -auto-alt-ref 0
-c:v libvpx-vp9
-pix_fmt yuva420p
-crf 24
-b:v 0
-cpu-used 3
-auto-alt-ref 0
特点:
画质和体积比较均衡
建议作为默认设置
-c:v libvpx-vp9 -pix_fmt yuva420p -crf 28 -b:v 0 -cpu-used 3 -auto-alt-ref 0
-c:v libvpx-vp9
-pix_fmt yuva420p
-crf 28
-b:v 0
-cpu-used 3
-auto-alt-ref 0
特点:
当前 BAT 基本属于这一档
压缩率非常高
适合网页、UI、透明动画等用途
-c:v libvpx-vp9 -pix_fmt yuva420p -crf 32 -b:v 0 -cpu-used 4 -auto-alt-ref 0
-c:v libvpx-vp9
-pix_fmt yuva420p
-crf 32
-b:v 0
-cpu-used 3
-auto-alt-ref 0
特点:
文件更小
透明边缘、渐变、烟雾、发光等区域更容易出现压缩痕迹
如果只想修改一个参数:
只改 CRF。
当前:
-crf 28
需要更高画质:
28 → 26 → 24 → 22 → 20
需要更小文件:
28 → 30 → 32 → 34 → 36
最推荐测试的几个值:
CRF 20 = 高画质
CRF 24 = 推荐均衡
CRF 28 = 小体积
CRF 32 = 更小体积
因此普通使用时,可以把整个复杂的 FFmpeg 参数理解成:
20 ────── 24 ────── 28 ────── 32
高画质 均衡 小体积 更小体积
文件较大 画质损失增加
WebM/VP9 不适合直接设置:
压缩 50%
压缩 80%
压缩 95%
这种百分比。
例如:
94 MB → 1.5 MB
实际文件体积减少约 98.4%,但这并不代表设置了“98.4% 压缩”。
推荐使用:
CRF = 控制画质和压缩强度
转换完成后再计算:
实际压缩率 = (原文件大小 - 新文件大小) ÷ 原文件大小 × 100%
例如:
原文件:94 MB
新文件:1.5 MB
压缩后剩余:
1.5 ÷ 94 ≈ 1.6%
文件体积减少:
约 98.4%
也就是说,CRF 是输入设置,实际压缩百分比是转换完成后的结果。
普通用户只需要开放四项:
1. 画质 / 压缩强度
CRF 20 / 24 / 28 / 32
2. 分辨率
原始 / 75% / 50%
3. 帧率
原始 / 30 / 24 / 15 FPS
4. 编码速度
高质量 / 均衡 / 快速
以下参数建议固定,不让普通用户修改:
-c:v libvpx-vp9
-pix_fmt yuva420p
-b:v 0
-auto-alt-ref 0
其中真正决定日常“想压得更小还是想画质更好”的核心参数,就是:
-crf
本项目脚本采用 Unlicense 发布。
FFmpeg 不包含在本仓库中,并受其自身许可证约束。Adobe After Effects 是 Adobe 的产品,本项目与 Adobe 没有隶属或官方合作关系。