Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ToWebM

Platform After Effects Codec License

在 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

使用 AE 面板

1. 允许脚本访问文件

在 After Effects 中打开:

编辑 → 首选项 → 脚本和表达式

启用:

允许脚本写入文件和访问网络

2. 临时运行

在 AE 中选择:

文件 → 脚本 → 运行脚本文件…

然后选择 AE插件 透明WebM导出.jsx。面板会以浮动窗口运行,不需要安装。

3. 安装为可停靠面板

把 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导出

4. 导出 WebM

  1. 在项目面板或时间线中选中一个合成。
  2. 选择输出位置。
  3. 选择质量档位:
    • 高清:CRF 20
    • 推荐:CRF 28
    • 小体积:CRF 34
  4. 保持“保留透明通道”开启。
  5. 点击“一键导出 WebM”。

面板的处理流程:

当前合成
  → AE 渲染 RGB + Alpha 临时 AVI
  → FFmpeg 编码 VP9 Alpha WebM
  → 验证输出
  → 删除临时文件

面板不会携带 FFmpeg。它会尝试寻找系统中现有的 ffmpeg.exe;未找到时,可以手动选择或打开下载入口。

使用 BAT

FFmpeg 的放置方式

任选一种:

  1. 将 FFmpeg 的 bin 目录加入系统 PATH;或
  2. 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。

提示找不到 FFmpeg

  • 点击面板中的选择按钮。
  • 选择解压目录下的 bin\ffmpeg.exe,不要只选择 bin 文件夹。
  • 或将 FFmpeg 的 bin 目录加入系统 PATH

导出的 WebM 没有透明效果

  • 确认原始 AVI 或 AE 合成确实包含透明区域。
  • 确认没有背景图层覆盖画面。
  • 确认 AE 输出模块为 RGB + AlphaStraight (Unmatted)
  • 换一个支持 WebM Alpha 的播放器或平台检查。

输出边缘有黑边

通常是 Alpha 预乘方式不正确。请在 AE 输出模块中使用 Straight (Unmatted),不要使用带黑色遮罩的 Premultiplied 输出。

建议的仓库结构

ToWebM/
├─ AE插件 透明WebM导出.jsx
├─ AVI_to_Transparent_WebM.bat
├─ README.md
└─ LICENSE

透明 WebM 压缩参数说明

当前转换命令核心参数:

-c:v libvpx-vp9 -pix_fmt yuva420p -crf 28 -b:v 0 -auto-alt-ref 0

一、CRF:主要的画质 / 压缩控制参数

当前:

-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:码率限制

当前:

-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:透明通道和颜色格式

当前:

-pix_fmt yuva420p

其中:

YUV = 视频颜色数据
A   = Alpha 透明通道
420 = 色度使用 4:2:0 采样

yuva420p 包含 Alpha 透明通道。FFmpeg 将其定义为带 Alpha 的平面 YUV 4:2:0 像素格式。

对于需要浏览器、网页、游戏/UI 等环境播放的透明 WebM:

建议保持 yuva420p

这个参数不建议作为日常压缩大小调节项


四、auto-alt-ref:透明 WebM 建议保持不变

当前:

-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:控制编码速度

可以额外添加:

-cpu-used 2

这个参数主要影响:

编码速度 ↔ 压缩效率

可以简单使用:

设置 编码速度 压缩效率
0 很慢 较高
1
2 较慢 较高
3 均衡 推荐
4 较快 一般
5 较低
6 很快 较低

一般推荐:

-cpu-used 2

或:

-cpu-used 3

如果只是临时快速转换,可以:

-cpu-used 5

cpu-used 并不是直接控制画质的参数,它主要决定编码器愿意花多少时间寻找更有效的压缩方式。


推荐组合

1. 高画质

-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

特点:

画质优先
透明边缘和细节保留较好
文件相对较大

2. 推荐 / 均衡

-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

特点:

画质和体积比较均衡
建议作为默认设置

3. 小体积

-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、透明动画等用途

4. 极小体积

-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 是输入设置,实际压缩百分比是转换完成后的结果。


建议 BAT 最终开放给用户调整的项目

普通用户只需要开放四项:

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 没有隶属或官方合作关系。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages