# 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 | ## 用法 ```bash 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 整目录推: ```bash tar -xzf cyber-star-assets.tar.gz tosutil cp -r -f assets-compressed/* tos://cyber-star/ ```