feat(tools): 新增开场视频与曲目伪装的编辑工具

Merged
HU
4d ago
+2212-2

概述

配合 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 替换音频正常;GetIntroAudioFile 200/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.