GICutscenes原神过场动画提取 内嵌字幕多音轨

自4.6版本开始,原神部分过场动画是游戏内实时渲染的,无法通过本文方法提取。

简要说明

使用到的工具:

原神PC客户端自不必说,所有动画 usm 文件都要从客户端里找。GI-cutscenes 是用来从 usm 文件中解密、提取、合并音视频的,它依赖 ffmpeg 视频库。我这里不仅要提取出动画,还要内嵌中、日字幕,所以还要下载 AnimeGameData 这个仓库,需要用到里面的字幕文件。还有,为了还原游戏内的字幕样式,还需要原神的字体文件,它们也能在客户端中找到。如果没有添加字幕的需求,就不用下载 AnimeGameData。

准备工具

ffmpeg

很多播放器软件可能已经将 ffmpeg 安装到系统中了,打开 cmd 终端,输入命令:

1
ffmpeg

如果正常显示版本号等信息,说明系统中已有 ffmpeg,不用再下载安装了。

否则,通过官网下载 ffmpeg for Windows 可执行文件包:

https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z

解压并复制 bin 目录下三个 exe 文件到任意文件夹内,如:E:\Environment\ffmpeg

将该文件夹路径添加到系统环境变量,然后重新打开 cmd 终端输入命令验证一下。

GI-cutscenes

注意!如果需要自定义配音语言(使用 --audio-lang 参数),不要从其 GitHub 仓库中直接下载 Release 版本,这些版本编译时间较早,没有自定义语言的功能(详见Issue: #127)。我编译生成了最新的版本,下载地址:https://frozensky.lanzoue.com/iNugd20ije6f

解压 GI-cutscenes 到任意目录,最好是全英文路径且不含空格。

修改 appsettings.json

这是软件的配置文件,我压缩包内是已经配置好的。附上相关注释,可按需修改。

1
2
3
4
5
6
7
8
{
"Settings": {
"MkvMergePath": "", # 新版本已经不需要 留空
"FfmpegPath": "", # ffmpeg位置 已经加入环境变量 留空即可
"SubsFolder": "./GenshinData/Subtitle", # 字幕路径
"SubsStyle": "Style: Default,{fontname},12,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100.0,100.0,0.0,0.0,1,0,0.5,2,10,10,14,1" # 字幕样式
}
}

versions.json

要特别注意这个文件,原神过场动画的 usm 文件都是加密的,version.json 是每个动画的密钥,为了防止剧情动画被提前偷跑剧透,miHoYo 只有在游戏播放动画时才在线发送密钥给客户端,所以这个文件要随着游戏版本进行更新,否则无法解密最新的动画。在我编译的压缩包里已经附带了 2024-05-21 前最新的 versions.json。如果后续版本要更新它,可以到作者仓库 pull requests 里面找找,一般都会有大侠提供最新版的文件。

AnimeGameData (可选)

想在动画里内嵌字幕的话才需要下载这个,我们只要其中的字幕文件,不用下载整个仓库,只把 AnimeGameData\Subtitle 目录下载下来即可。解压后将其放到 GI-cutscenes 软件的这个路径下 “GI-cutscenes\GenshinData\Subtitle”。

目录内含多国语言字幕,可以根据需求保留你想要添加到视频里的语言,比如我只要简中、繁中、日文,那么可以保留 CHS, CHT, JP 这三个文件夹,其他皆可删除。注意!CHS文件夹不能删除!

字幕文件夹

字体 (可选)

字体文件在原神PC客户端这个路径下:

1
\Genshin Impact Game\GenshinImpact_Data\StreamingAssets\MiHoYoSDKRes\HttpServerResources\font

将 zh-cn.ttf 和 ja-jp.ttf 复制到 GI-cutscenes 所在目录。

提取动画

原神过场动画存储在:

1
Genshin Impact\Genshin Impact Game\YuanShen_Data\StreamingAssets\VideoAssets\StandaloneWindows64\

操作前还是建议把他们从客户端复制到别的地方,防止误操作损坏文件。

进入 GI-cutscenes 软件目录,打开命令提示符,相关的命令如下:

提取指定动画

1
2
# 提取指定的 .usm 文件,合并音视频,添加字幕,音轨选择
.\GICutscenes.exe demuxUsm "[Path to .usm file]" --merge --subs --audio-lang "jpn,eng"

举个栗子:我想提取 Cs_Fontaine_LQ140091201_SLRC_Girl.usm 文件中的动画,要内嵌字幕,并且添加中日双语配音,则命令如下:

1
.\GICutscenes.exe demuxUsm "E:\ys_videos\Cs_Fontaine_LQ140091201_SLRC_Girl.usm" --merge --subs --audio-lang "chi,jpn"

批量提取

1
2
# 提取目录下所有动画文件,合并音视频,添加字幕,音轨选择
.\GICutscenes.exe batchDemux "[Path to dir]" --output "./output" --merge --subs --audio-lang "chi,jpn"

批处理提取

提取出的动画被封装为 mkv 格式,播放时可以自由切换配音和字幕。