指南:用GI-cutscenes把游戲動畫變成可收藏的MKV)
《原神》USM過場動畫提取實戰(zhàn)指南用GI-cutscenes把游戲動畫變成可收藏的MKV【免費下載鏈接】GI-cutscenesA command line program playing with the cutscenes files (USM) from Genshin Impact.項目地址: https://gitcode.com/gh_mirrors/gi/GI-cutscenes很多《原神》玩家都有過這樣的遺憾游戲里那些精美絕倫的過場動畫明明想反復(fù)回看、收藏甚至分享卻發(fā)現(xiàn)它們在游戲目錄里是一堆看不懂的.usm文件直接用播放器根本打不開。GI-cutscenes 就是為解決這個問題而生的命令行工具——它能把《原神》的 USM 過場動畫文件解密、提取、轉(zhuǎn)換最終合并成一部帶字幕的完整 MKV 電影讓你在任何設(shè)備上都能流暢播放。今天這篇文章我會以一個新手的視角帶你從零跑通整個流程。為什么直接用播放器打不開先弄懂 USM 是什么在你動手之前先花一分鐘搞清楚問題出在哪后面會少踩很多坑。.usm是日本 CRIRender/Criware 公司開發(fā)的一種專有媒體容器格式原神使用它來封裝過場動畫。它和.mp4這類開放格式最大的區(qū)別是里面的視頻軌和音頻軌都被加密了而且音頻用的 HCA 編碼也是封閉標(biāo)準(zhǔn)普通播放器根本無從下手。換句話說你拿到的是一本加了鎖、還用特殊方言寫的書。而 GI-cutscenes 干的事情就是三件解密用游戲版本對應(yīng)的密鑰解開 USM 里的加密數(shù)據(jù)轉(zhuǎn)換把加密的 HCA 音頻解碼成通用的 WAV把視頻還原成 IVF內(nèi)部是 VP9 編碼合并把視頻、音頻、字幕、字體打包進(jìn)一個標(biāo)準(zhǔn) MKV 文件。全程不需要你懂任何底層原理一條命令就能搞定。工具支持解密 1.0 到 6.3 版本的所有過場動畫覆蓋面相當(dāng)廣。第一步拿到工具裝好環(huán)境獲取項目項目基于 .NET 6.0 開發(fā)你可以直接下載官方發(fā)布的預(yù)編譯版本W(wǎng)indows、Linux、macOS 都有還分獨立版和框架依賴版前者免安裝 .NET 直接跑后者體積小但要裝運(yùn)行時。如果你更喜歡從源碼構(gòu)建可以這樣git clone https://gitcode.com/gh_mirrors/gi/GI-cutscenes cd GI-cutscenes dotnet publish -c Release -r win-x64 # 平臺可換成 linux-x64 / osx-x64小貼士如果本地裝了 Visual Studio 2022直接打開GICutscenes.sln解決方案文件點構(gòu)建也行。準(zhǔn)備字幕數(shù)據(jù)想要字幕的必看默認(rèn)情況下字幕是從游戲數(shù)據(jù)倉庫里讀取的路徑配置在appsettings.json的SubsFolder字段默認(rèn)是./GenshinData/Subtitle。你需要把字幕數(shù)據(jù)放到這個位置git clone --depth 1 --filterblob:none --sparse [字幕倉庫URL] cd GenshinData git sparse-checkout set Subtitle準(zhǔn)備字體文件倉庫本身不帶字體但 MKV 里要內(nèi)嵌字體才能讓字幕正確顯示。去游戲安裝目錄里復(fù)制這兩個文件不要改名放到工具目錄下[游戲目錄]\Genshin Impact game\GenshinImpact_Data\StreamingAssets\MiHoYoSDKRes\HttpServerResources\font里面是ja-jp.ttf日文字體和zh-cn.ttf中文字體。第二步跑通最小示例先成功一次環(huán)境就緒后我們先拿一個過場動畫文件練手。找到游戲目錄下的 VideoAssets 文件夾里面全是.usm文件挑一個GICutscenes demuxUsm Cs_MDAQ019_DragonInCity_Boy.usm --output ./output --merge --subs拆開看這條命令做了什么參數(shù)作用demuxUsm提取單個 USM 文件--output ./output輸出到 output 目錄--merge合并成 MKV不寫的話只提取原始素材--subs把字幕也塞進(jìn) MKV運(yùn)行后你會在 output 目錄里得到一個同名.mkv文件用 VLC 或 PotPlayer 打開——恭喜你已經(jīng)把游戲動畫變成一部可收藏的電影了字幕的樣式、字體、顏色都是按游戲內(nèi)的風(fēng)格還原的看起來就像在游戲里播放一樣。小貼士命令沒指定密鑰程序會自動根據(jù)文件名在versions.json里查找匹配的版本密鑰。所以請保持versions.json是最新的這點后面會細(xì)說。第三步進(jìn)階玩法從夠用到好用跑通一次之后你肯定會遇到新的需求動畫太多一個個提取太慢、想要特定語言的音軌、想控制輸出格式……這些 GI-cutscenes 都想到了。批量提取整個文件夾 游戲里幾十個過場動畫一條命令全部處理GICutscenes batchDemux [游戲目錄]\GenshinImpact_Data\StreamingAssets\VideoAssets\StandaloneWindows64 --output ./output --merge --subs --no-cleanup--no-cleanup的意思是合并完成后保留提取出來的中間文件視頻、音頻、字幕方便你調(diào)試或二次加工。不加這個參數(shù)程序會在合并成功后自動清理省硬盤空間。多語言音軌自由選擇 過場動畫通常內(nèi)置四國配音中、英、日、韓你可以在合并時指定要保留哪些GICutscenes demuxUsm file.usm --merge --subs --audio-lang chi,jpn這條命令只保留中文和日文音軌做多語言對比學(xué)習(xí)特別方便。切換合并引擎與編解碼器 ??從 0.4.0 版本開始內(nèi)置的 MKV 合并引擎已經(jīng)足夠強(qiáng)大不依賴任何外部軟件。但你也可以指定用 mkvmerge 或 FFMPEG# 用 mkvmerge 合并需安裝 MKVToolNix GICutscenes demuxUsm file.usm --merge --mkv-engine mkvmerge # 自定義音視頻編碼此時引擎會自動切換為 ffmpeg GICutscenes demuxUsm file.usm --merge --audio-format aac --video-format h264默認(rèn)輸出的是原始畫質(zhì)VP9 視頻 PCM 無損音頻。想壓縮體積再指定編碼格式。單獨轉(zhuǎn)換 HCA 音頻文件 如果只想處理音頻convertHca命令更輕量GICutscenes convertHca audio_0.hca它會將 HCA 解碼成標(biāo)準(zhǔn) WAV 文件音頻質(zhì)量無損。最容易踩的三個坑幫你提前排掉 ??坑一提示找不到解密密鑰游戲更新后新的過場動畫密鑰可能還沒收錄。癥狀是命令行提示類似Unable to find the second key in versions.json for xxx。解決辦法更新versions.json文件GICutscenes update這條命令會自動拉取最新的版本密鑰文件并順帶檢查工具本身有沒有新版本。如果網(wǎng)絡(luò)環(huán)境特殊還可以走代理GICutscenes update --proxy http://proxy.example.com:8080如果versions.json里依然沒有你需要的密鑰不妨去項目的 Pull Requests 看看——社區(qū)玩家往往第一時間就提交了新密鑰。你如果手上有新版本密鑰也歡迎提交 PR 回饋項目這正是開源項目能持續(xù)跟進(jìn)游戲更新的原因。坑二字幕顯示為方框或亂碼九成是字體問題。請確認(rèn)ja-jp.ttf和zh-cn.ttf已經(jīng)從游戲目錄復(fù)制到工具目錄且沒有改名appsettings.json里的SubsStyle配置沒被破壞。如果你覺得字幕太小或位置不對可以直接改SubsStyle這個配置項它遵循 SubStation AlphaASS字幕格式的樣式規(guī)范像12是字號、H00FFFFFF是字體顏色按需調(diào)整即可。改壞了也不怕運(yùn)行GICutscenes reset一鍵恢復(fù)默認(rèn)配置??尤帜缓鸵纛l不同步有些玩家發(fā)現(xiàn)字幕時間軸對不上。其實游戲原文件本身就存在這個現(xiàn)象個別過場動畫在游戲內(nèi)播放時字幕就是延遲的這不是工具的 bug。遇到這種情況只能靠字幕編輯工具手動微調(diào)偏移量。原理速覽它內(nèi)部是怎么工作的作為技術(shù)愛好者你可能會好奇背后的實現(xiàn)。整個項目是清晰的模塊化結(jié)構(gòu)src/ ├── FileTypes/ # 文件格式核心USM 解析、HCA 解密、MKV/ASS 處理 ├── Mergers/ # 三種合并引擎內(nèi)置 GIMKV、FFMPEG、Mkvmerge ├── Utils/ # 版本更新、工具函數(shù) ├── Demuxer.cs # 解密密鑰的查找與拆分邏輯 └── Program.cs # 命令行入口與參數(shù)解析核心處理鏈路是USM 解析 → 分離音視頻軌 → HCA 解密轉(zhuǎn) WAV → SRT 字幕轉(zhuǎn) ASS → 多軌合并為 MKV。其中解密這塊挺有意思src/FileTypes/USM.cs里實現(xiàn)了掩碼mask算法用key1、key2兩個密鑰生成 32 字節(jié)的掩碼數(shù)組分別對視頻和音頻數(shù)據(jù)進(jìn)行異或解密。而密鑰本身有兩段來源一段由文件名通過哈希算法算出來Demuxer.cs里的EncryptionKeyInFilename另一段則查versions.json。所以哪怕文件名變了程序也能推導(dǎo)出對應(yīng)密鑰。內(nèi)置合并引擎src/Mergers/GIMKV/更是一個完整的 MKV 容器構(gòu)建器它會解析 IVF 視頻流、WAV 音頻流和 ASS 字幕流把每一幀數(shù)據(jù)寫入 Cluster 塊同時生成 Cues索引和 Tags元數(shù)據(jù)最后拼裝成符合規(guī)范的 MKV 文件。多語言音軌的合并還支持多線程音頻解碼處理速度相當(dāng)可觀。一些讓你用得更好的小技巧 保留中間文件做創(chuàng)作素材想用提取的素材做視頻剪輯加--no-cleanup你會拿到.ivf視頻文件和.wav音頻文件直接用剪輯軟件導(dǎo)入即可。批量處理的性能優(yōu)化batchDemux內(nèi)部會并行處理只要硬盤讀寫跟得上幾十個文件也能較快跑完。遇到看不懂的報錯加上--stack-trace參數(shù)終端會打印完整錯誤堆棧方便排查問題。配置被改亂了任何時候運(yùn)行GICutscenes resetappsettings.json會恢復(fù)默認(rèn)。結(jié)語讓精彩不再只存在于游戲里從今天起那些讓你反復(fù)回味的《原神》過場動畫不再只是游戲里轉(zhuǎn)瞬即逝的片段。用 GI-cutscenes 提取、合并成 MKV 后你可以把它們放進(jìn) Plex、Jellyfin 這樣的媒體服務(wù)器隨時隨地在大屏上重溫也可以提取多語言音軌和字幕做語言學(xué)習(xí)素材還可以把無字幕的原片素材用于二次創(chuàng)作。工具的價值在于怎么用它。提取內(nèi)容請遵守游戲的使用條款合理使用、分享快樂。現(xiàn)在就去找到你的第一個.usm文件跑通那行命令然后享受收藏了整部《原神》電影的成就感吧【免費下載鏈接】GI-cutscenesA command line program playing with the cutscenes files (USM) from Genshin Impact.項目地址: https://gitcode.com/gh_mirrors/gi/GI-cutscenes創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考