一个类似 TCAX 的特效字幕制作工具,用 TypeScript 从头重写。
TCAX/ # 原版 TCAX 参考(git submodule) packages/ ├── core/ # 纯 Node.js 字幕引擎(已完成) ├── web/ # React/Vue 前端 PWA(规划中) └── electron/ # Electron 桌面客户端(可选) tools/ ├── ass-libass-screenshot/ # FFmpeg+libass 截图验证工具(已完成,全局命令: ass-sc) └── ass-screenshot/ # Canvas 渲染截图工具(规划中) test/ # 测试用 TCC/ASS 文件
纯 TypeScript 实现,零原生依赖,可在无显示器的服务器上运行。
| 模块 | 状态 | 说明 |
|---|---|---|
| ASS 解析/生成 | ✅ 完成 | 完整解析 Script Info / Styles / Events 三段式结构,支持 Format 行动态映射、时间转换、卡拉 OK 标签提取 |
| SYL 音节解析 | ✅ 完成 | 三种 K Mode:syllable(逐字)/ word(原分段)/ advanced(两字一组),含翻译行去重与 Kar 时间矩阵 |
| TCC 配置解析 | ✅ 完成 | 30+ 字段完整支持,round-trip 序列化,含默认配置工厂 |
| 特效脚本引擎 | ✅ 完成 | 动态 import() 加载用户 JS/TS 脚本,兼容 TCAX Python 命名约定(tcaxPy_Main/main),内置回退搜索机制 |
| 特效注册表 | ✅ 完成 | 6 大类别扫描(in/main/eft/out/ext/all)、元数据提取、运行时注册注销、多语言 i18n 搜索 |
| 渲染管线 | ✅ 完成 | 8 步流水线:TCC 解析 → ASS/SYL 构建 → 文本度量 → Init/Main/Fin 生命周期 → 排序输出 |
| 字体引擎 | ✅ 完成 | 双引擎架构:OpenTypeFont(fontkit,Node.js + 浏览器)+ CanvasFont(浏览器),支持 OS/2 修正、TTC 合集字库、Kerning 字距调整 |
| TCAX API 层 | ✅ 完成 | 90+ 个 API 函数完全兼容 tcaxPy 命名:pos/move/fsc/frz/color/k/ko/kf/t/pix* 等 |
| 像素操作 | ✅ 纯 JS | 9 个函数:pixPos/pixFromPoints/pixInvertA/pixR2A 等,Uint8Array 实现(暂无 WASM 加速) |
| CLI 命令行 | ✅ 基本完成 | tcax render <project.tcc> + --info 模式 |
| 类型系统 | ✅ 完善 | 53 个 ValId 映射、i18n 元数据、EffectParamDef 支持 UI 编辑器 |
| ID | 类别 | 效果 | 多语言 |
|---|---|---|---|
in_001 | 入场 | 淡入 Fade In | zh/en/ja |
main_001 | 主体验 | 静态显示 Static Display | zh/en/ja |
eft_001 | 卡拉OK | 变色 Color Change | zh/en/ja |
out_001 | 出场 | 淡出 Fade Out | zh/en/ja |
# 方式一:一键安装(推荐)
bash setup.sh
# 方式二:手动安装
cd packages/core && npm install && npm run build && npm link
cd tools/ass-libass-screenshot && npm install && npm run build && npm link
# 渲染字幕项目
tcax render project.tcc -o output.ass -w ./workdir
# 查看项目配置信息
tcax render project.tcc --info
# 截图验证渲染效果(支持 MM:SS / H:MM:SS.cc / 秒小数 等格式)
ass-sc subtitle.ass --time 0:58 -o screenshot.png --fonts-dir ./fonts
| 形态 | 说明 |
|---|---|
| npx 直接运行 | npx @tcax/cli render project.tcc 无需预安装 |
| npm 全局安装 | npm i -g @tcax/cli && tcax render ... |
| pkg 二进制 | 编译为单文件可执行,无需 Node.js 环境 |
| Docker | docker run tcax render ... |
基于 FFmpeg + libass 的 ASS 字幕截图工具,产生与 mpv/VLC 像素级一致的渲染结果。用于验证 core 生成的 .ass 文件在播放器中的实际效果是否正确。
时间格式支持: MM:SS、H:MM:SS.cc、秒小数(58.5)、原始厘秒(整数)
# 全局命令使用(setup.sh 安装后)
ass-sc subtitle.ass --time 0:58 -o screenshot.png --fonts-dir ./fonts
# 或直接运行 node
node tools/ass-libass-screenshot/dist/index.js subtitle.ass -t 00:01:30 -o screenshot.png
核心引擎已基本完成,下一步将开发 Web/PWA 前端编辑器。