UI-UX/tools/asset-pipeline
iye c0bce80dd1
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 5m13s
chore(tools): asset compression pipeline for TOS bucket upload
新增 tools/asset-pipeline/ 用于把 public/portraits & videos 压缩成桶友好体积:
- sharp:    PNG → WebP q82, 最大宽 1600 (-view 三视图 2400)
- ffmpeg:   MP4 → libx264 CRF 28, 最大宽 1920, AAC 96k, faststart
- pack.mjs: tar -czf 整目录 → cyber-star-assets.tar.gz

效果 (146 portraits + 33 videos):
- 立绘:  768.6MB → 26.8MB  (-96%)
- 视频:  251.7MB → 76.1MB  (-70%)
- 总计:  1020MB  → 103MB   压缩到 1/10, 95s 跑完

输出位于仓库外 ../assets-compressed/ 与 ../cyber-star-assets.tar.gz, 不入 git。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 14:26:42 +08:00
..

Asset Pipeline · TOS 桶资源压缩 + 打包

public/portraits/public/videos/ 转成桶友好的体积WebP + H.264),输出到仓库外的 ../assets-compressed/

输出结构(与桶目录对齐)

assets-compressed/
├── portraits/
│   ├── 001.webp
│   ├── 001-2.webp
│   ├── 001-3.webp
│   ├── 001-view.webp
│   └── ...
└── videos/
    ├── hero-pv.mp4
    └── artists/001.mp4 ...

压缩参数

类型 处理 目标体积
立绘 / 氛围图 PNG WebP q82, 最大宽 1600 ≤ 800KB
三视图 -view.png WebP q82, 最大宽 2400 ≤ 1.5MB
视频 MP4 libx264 CRF 28, 最大宽 1920, AAC 96k, faststart 单条 ≤ 3MB / Hero PV ≤ 15MB

用法

cd tools/asset-pipeline
npm install           # 装 sharp + ffmpeg-installer (各自带二进制, 无需系统装)
npm run compress      # 压缩, 已存在且新于源的输出会跳过 (可恢复中断)
npm run pack          # 打包成 cyber-star-assets.tar.gz

输出文件:

../../assets-compressed/                # 压缩后的源文件 (供回滚 / 抽查)
../../cyber-star-assets.tar.gz          # 发给运维上传的最终包

上传到桶

运维拿到 cyber-star-assets.tar.gz 解压后,用 tosutil 整目录推:

tar -xzf cyber-star-assets.tar.gz
tosutil cp -r -f assets-compressed/* tos://cyber-star/