A graphical UI implementation for ToaHartor's gi-cutsenes utility.
- This was created for educational and demonstrational purpose only.
- I didn't code the demuxer / decrypter program myself, all I did was creating a front-end interface and code a new procedure to merge the video (see the "Limitations" section). All credits of the demuxing / decrypting process and the
gi-cutscenesCLI program belongs to the mastermind of gh/ToaHartor. - All assets, including the font and the cutscenes files are intellectual property of miHoYo. The icon was taken from Genshin Impact Wiki.
- Select specific audio track / subtitles languages to be merged into a single video.
- Provide an easy and intuitive interface to interact with
gi-cutscenes - Screenshots:
-
Prerequisites:
-
Clone this repository:
git clone https://github.com/azurenekowo/ayaka.git, or download the latest release. -
Rename
config.json.TEMPLATEtoconfig.json, open it and modify it to your own likings. -
After everything is ready, copy the USM file(s) into your input directory and run
node server.js -
Access http://localhost:2809/ on your browser. If you had modified the port settings, then change it accordingly.
config.json can be found at the root folder.
Below is a simple cheatsheet / handbook.
{
"prerequisites": {
"ffmpeg": "path",
"gicutscenes": "<path_to_GICutscenes.exe>"
},
"output": "<output_directory>",
"defaultFFMPEGFlags": "-preset superfast",
"optionUSMFilesDir": "<folder_containing_usm_files>"
}| key | meaning |
|---|---|
prerequisites.ffmpeg |
The path to FFmpeg's binary. If set to path, it'll look inside %path% |
prerequisites.gicutscenes |
The path to gi-cutscenes binary |
output |
The path to the folder that the program will use to export the video |
optionUSMFilesDir |
The path to the folder containing the .usm file(s) to load in |
It's basically an archive that is encrypted and needs to be decrypted/demuxed in order to view its content.
You can find them in [genshin impact folder]\GenshinImpact_Data\StreamingAssets\VideoAssets\StandaloneWindows64.
There are some cutscenes that have 2 files with the same name, suffixed with Boy / Girl.
It is for Aether /
Lumine specifically.
Normally, it contains:
filename.ivf: The actual video file, without any subtitles or audio track.filename_AUDIO_CODE.hca: The encrypted audio file. There are 4 values available forAUDIO_CODE:0: Chinese1: English2: Japanese3: Korean
- If there are subtitles in the cutscene, gi-cutscenes will extract and convert them to
.assfiles, in the formatfilename_LANG_CODE.ass. There are 15 values available forLANG_CODE:CHS: Chinese SimplifiedCHT: Chinese TraditionalDE: GermanEN: EnglishES: SpanishFR: FrenchID: IndonesianIT: ItalianJP: JapaneseKR: KoreanPT: PortugueseRU: RussianTH: ThaiTR: TurkishVI: Vietnamese
- ToaHartor's
gi-cutscenesdoesn't provide an option to extract subtitles individually. You have to use its-m(merge) option and-nc(no cleanup), that will merge the video in order to generate the.assfiles. Then after that, the program will start merging the audio track, the video and the subtitles (if provided) into a.mp4file. - The speed depends on your device specs. could be somewhat improved with tweaking the
-presetflag - doc - For now, Windows only.
- Live console output in the browser
- Improve the stability and fallback options if FFmpeg fails
- Migrating to
fluent-ffmpeginstead of running it in the shell - Cross-platform support
All contributions are appreciated.
If you have an issue please submit it under the Issues tab. Or if you want to contribute, you can open a pull request.

