前言

  本教程源于github作者ToaHartor的开源项目GI-cutscenes,为方便自己后面使用,以此记录下过程,其中有参考雪落余音大佬的博客


下载工具

GI-cutscenes的文件下载页面下载相应文件,Windows下载图中这个
然后下载ffmpeg,方法自行B站查找。

目标文件

原神的过场动画文件都是加密的USM文件,在路径miHoYo Launcher\games\Genshin Impact Game\YuanShen_Data\StreamingAssets\VideoAssets\StandaloneWi中。
操作前还是建议把他们从客户端复制到别的地方,防止误操作损坏文件。

提取动画

将下载的压缩包解压到一个空文件夹,然后在该位置打开命令行执行命令

命令

有 3 种不同的命令可用于文件:

  • demuxUsm(常用) 对特定的 USM 文件进行解包,提取音频和视频并将提取的 HCA 文件转换为 WAV
  • batchDemux(常用) 将所有 USM 文件解包到特定文件夹中
  • convertHca 将 HCA 文件转换为 WAV

大多数命令都有几个选项可用:

  • --output 允许选择输出文件夹
  • --merge 添加合并步骤,将视频、音频(以及字幕,如果也有该选项)放入单个 MKV 文件中。如果输入该选项,字幕将自动转换为 SSA 格式并存储在输出目录的文件夹中。
  • --audio-lang 在输出中指定音轨语言,允许的值为[chi,eng,jpn,kor]

例子:
提取指定动画

1
GICutscenes.exe demuxUsm "[USM文件路径]" --merge --audio-lang "jpn"

批量提取

1
GICutscenes.exe batchDemux "[放USM文件的文件夹路径]" --output "./output" --merge --audio-lang "chi"

多音轨

  • GitHub 仓库中直接下载的 Release 版本编译时间较早,没有自定义语言的功能。所以下载雪落余音编译生成的版本,下载地址:https://frozensky.lanzoue.com/iNugd20ije6f
    简单示例
1
2
3
4
<!-- 提取指定动画 -->
GICutscenes demuxUsm "Cs_Fontaine_LQ140091201_SLRC_Girl.usm" -m --audio-lang "chi,jpn"
<!-- 批量提取 -->
GICutscenes batchDemux "USM文件夹" -m --audio-lang "chi,jpn"

密钥

  要特别注意versions.json这个文件,原神过场动画的 usm 文件都是加密的,version.json 是每个动画的密钥,为了防止剧情动画被提前偷跑剧透,miHoYo 只有在游戏播放动画时才在线发送密钥给客户端,所以这个文件要随着游戏版本进行更新,否则无法解密最新的动画。 如果您想提取更新的过场动画,只需在项目树此处中下载更新的文件并替换该文件即可。 每次发布新版本时,此文件都会使用版本密钥进行更新。
  如果某些密钥尚不可用,请检查拉取请求,看看是否有人已经提交了它们。