feat(tools): 新增开场视频与曲目伪装的编辑工具
Merged
HU
4d ago+2212+2212+0123456789012345678901234567890123456789-2-2-0123456789
概述
配合 AquaMai 的 Fancy.CustomIntroCinematic / Fancy.TrackCamouflage,在「工具」页新增编辑工具:
- 开场视频:为指定乐曲设置
LocalAssets/IntroMovies/Enter_<id>.mp4(或_L/_R分屏),并自动生成Enter_<id>.acb/.awb - 曲目伪装:编辑
LocalAssets/Camouflages/<id>.toml与<id>_jacket.*,含封面预览
后端 Controllers/Tools/FancyToolController.cs
- 开场视频:
GetIntroMovie/GetIntroMovieFile(PhysicalFile + Range)/GetIntroMovieList/SetIntroMovie/DeleteIntroMovie - 上传视频统一转 H.264 MP4,只留画面(与游戏内一致:AquaMai 的 VideoPlayer 不输出视频音轨)
- 音轨自动抽成
Enter_<id>.acb/.awb(复用Audio.ExtractAudioFromMp4+Audio.ConvertToMai),游戏里由它们发声 - 支持「左右屏同一视频(单文件)」与「左右分开」,替换单侧时自动补齐另一侧
- 开场音频单独替换:
SetIntroAudio/DeleteIntroAudio - 音频预览:
GetIntroAudioFile把 acb/awb 解成 wav(按 acb mtime 缓存、支持 Range),供前端试听 - 曲目伪装:
GetCamouflage/GetCamouflageJacket/GetCamouflageList/SetCamouflage(Tomlyn + 原子写入)/SetCamouflageJacket/DeleteCamouflage - 删除/覆盖统一走
DeleteFilesWithRetry/MoveFileWithRetry:文件被占用(例如还在预览)时先探测再重试并最终兜底,不会卡死也不会误报成功
VideoConvert(新增可选参数,其他调用方行为不变)
KeepAudio:是否保留音轨(默认丢弃)ExtraArgs+H264QualityArgs(codec):按编码器给画质参数。本机探测到h264_mf,默认设置码率极低(720×720 仅 1.0 Mbps),加参数后同源 1280×1280 可到 13 Mbps
前端 views/Tools/IntroCamouflageModal.tsx
- 全部使用 MuNET-UI 组件(Tabs / Select / TextInput / CheckBox / Button / Modal),曲目选择 = 搜索框 + Select
- 左右分屏用 1:2 并排预览;视频一律 muted,声音只播一路解码后的音频,播放/暂停/拖动进度与画面双向同步,避免重声
- 未选择乐曲时所有输入与按钮禁用
- 已有列表显示真实曲名(开场视频用
L=R/L/R标记),载入时清空搜索并定位到该曲目 - 替换封面只刷新封面状态,不会冲掉尚未保存的表单内容
- 删除/覆盖前主动释放播放器句柄,避免 Windows 因占用删不掉文件
测试
dotnet build -c Crack、pnpm typecheck、pnpm build全部通过- 实测:带音轨 mp4 → 输出只有 video 流,自动生成 acb(6688B)+awb;无音轨 mp4 → 清掉旧 acb/awb;
side=L/R分别写入并补齐另一侧;mp3 替换音频正常;GetIntroAudioFile200/206 正常 - 文件被占用时删除返回
delete-failed(约 3s),解锁后正常删除
Sourcery 摘要
在工具页加入开场视频与曲目伪装的完整编辑工作流,并将相关媒体处理能力整合到后端与前端。
新功能:
- 在工具页新增开场视频编辑功能,支持上传、预览、替换和删除单视频或左右分屏视频,并自动管理独立的游戏音频文件。
- 新增曲目伪装编辑功能,可配置曲名、曲师、谱师、解锁条件及封面。
错误修复:
- 改进媒体文件的覆盖和删除流程,减少因播放器占用而导致操作失败或误报成功的情况。
改进:
- 增强视频转换选项,支持控制是否保留音轨,并根据编码器应用画质参数。
- 提供支持 Range 的媒体预览、音频试听和前端播放同步,并补充简体中文、繁体中文及英文界面文案。
日常维护:
- 为新增的工具接口生成前端 API 类型和客户端调用代码。
Original summary in English
Sourcery 摘要
在 Tools 页面中集成 AquaMai 自定义内容的片头影片和曲目伪装编辑器。
新功能:
- 在 Tools 页面中添加 AquaMai 片头影片编辑流程,支持单画面或分屏视频、独立音频、预览、替换和删除。
- 添加曲目伪装编辑功能,可编辑元数据和封面图,并支持预览和保存。
错误修复:
- 当活动预览导致文件仍被锁定时,确保媒体替换和删除操作能够可靠地报告失败。
增强功能:
- 改进视频转换的质量控制,同时确保片头视频不含声音,并单独管理音频。
- 支持可启用范围选择的媒体预览、同步分屏播放以及本地化 UI 文本。
测试:
- 验证后端构建,以及新工具流程的前端类型检查和构建。
杂项:
- 为新的 Fancy Tool 端点生成类型化前端 API 模型和客户端方法。
Original summary in English
Sourcery 总结
在工具页集成 AquaMai 开场视频与曲目伪装的完整编辑工作流。
新功能:
- 在工具页新增 AquaMai 开场视频编辑,支持单视频或左右分屏视频、独立音频、预览、替换和删除。
- 新增曲目伪装编辑,支持修改曲名、曲师、谱师、解锁条件及封面并提供预览。
问题修复:
- 改进媒体文件覆盖和删除流程,在文件被预览占用时可靠地重试并报告失败。
功能增强:
- 增强视频转换能力,支持按编码器应用画质参数,并将开场视频音频独立管理。
- 提供支持 Range 的媒体预览、分屏播放同步和独立音频试听。
文档:
- 补充开场视频与曲目伪装功能的简体中文、繁体中文和英文界面文案。
测试:
- 验证后端构建及前端类型检查和构建。
杂项:
- 为新增 Fancy Tool 接口生成类型化前端 API 模型和客户端方法。
Original summary in English
Sourcery 总结
将 AquaMai 开场影片和曲目伪装编辑功能集成到 Tools 页面。
新功能:
- 在 Tools 页面中新增 AquaMai 开场影片管理工作流,支持共用视频或分屏视频、独立音频、预览、替换和删除。
- 新增曲目伪装编辑功能,支持编辑元数据、解锁条件和封面图,并支持预览和移除。
错误修复:
- 当预览播放器仍占用文件时,媒体替换和删除操作现在可以可靠地报告失败。
增强功能:
- 改进视频转换功能,支持显式选择视频流、配置编码器质量设置,以及添加额外的输出参数。
- 提供支持范围选择的媒体预览、同步分屏播放、独立音频预览,以及本地化的用户界面文本。
构建:
- 为新增的 Fancy Tool 端点生成类型化前端 API 模型和客户端方法。
测试:
- 验证后端编译、前端类型检查和生产构建。
Original summary in English
Sourcery 摘要
将 AquaMai 片头影片和曲目伪装编辑功能集成到 Tools 页面。
新功能:
- 在 Tools 页面中添加 AquaMai 片头影片管理工作流,支持单画面或分屏视频、独立音频、预览、替换和删除。
- 添加曲目伪装编辑功能,支持编辑元数据、解锁条件和封面图,并提供预览和移除功能。
错误修复:
- 当预览播放器仍在占用文件时,确保媒体替换和删除操作能够可靠地报告失败。
增强功能:
- 改进视频转换质量控制,并使片头视频的音频与视频流分离。
- 提供同步分屏播放、支持范围选择的媒体预览,以及本地化的 UI 文案。
构建:
- 为新增的 Fancy Tool 端点生成带类型的前端 API 模型和客户端方法。
测试:
- 验证后端编译、前端类型检查和生产构建。
Original summary in English
Summary by Sourcery
Integrate AquaMai intro movie and track camouflage editing into the Tools page.
New Features:
- Add Tools-page workflows for managing AquaMai intro movies, including single or split-screen videos, independent audio, previews, replacement, and deletion.
- Add track camouflage editing for metadata, unlock conditions, and jacket artwork with preview and removal support.
Bug Fixes:
- Make media replacement and deletion report failures reliably when preview players still hold files open.
Enhancements:
- Improve video conversion quality controls and keep intro video audio separate from the video stream.
- Provide synchronized split-screen playback, range-enabled media previews, and localized UI text.
Build:
- Generate typed frontend API models and client methods for the new Fancy Tool endpoints.
Tests:
- Validate backend compilation and frontend type checking and production builds.