{"id":31374622,"url":"https://github.com/sunsetmkt/wuwa-cutscenes","last_synced_at":"2025-09-28T00:34:43.284Z","repository":{"id":265774352,"uuid":"869243938","full_name":"SunsetMkt/WuWa-Cutscenes","owner":"SunsetMkt","description":"[Help Needed, See Issues] A method to export Wuthering Waves cutscenes/movies.","archived":false,"fork":false,"pushed_at":"2025-03-29T11:32:49.000Z","size":60,"stargazers_count":27,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-24T05:50:03.049Z","etag":null,"topics":["cutscene","wuthering-waves","wutheringwaves","wuwa"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SunsetMkt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-08T01:06:15.000Z","updated_at":"2025-07-22T16:01:15.000Z","dependencies_parsed_at":"2024-12-02T00:00:41.530Z","dependency_job_id":null,"html_url":"https://github.com/SunsetMkt/WuWa-Cutscenes","commit_stats":null,"previous_names":["sunsetmkt/wuwa-cutscenes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SunsetMkt/WuWa-Cutscenes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SunsetMkt%2FWuWa-Cutscenes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SunsetMkt%2FWuWa-Cutscenes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SunsetMkt%2FWuWa-Cutscenes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SunsetMkt%2FWuWa-Cutscenes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SunsetMkt","download_url":"https://codeload.github.com/SunsetMkt/WuWa-Cutscenes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SunsetMkt%2FWuWa-Cutscenes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277311260,"owners_count":25796890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-27T02:00:08.978Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cutscene","wuthering-waves","wutheringwaves","wuwa"],"created_at":"2025-09-28T00:34:38.009Z","updated_at":"2025-09-28T00:34:43.279Z","avatar_url":"https://github.com/SunsetMkt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WuWa-Cutscenes\n\n\u003e [!WARNING]  \n\u003e Movies (\\*.mp4) in 2.1 and after are encrypted. Help needed to reverse engineer the decryption solution. See issues.\n\u003e\n\u003e [What we know about WuWa's Media Player](HELP.md)\n\nA method to export Wuthering Waves cutscenes/movies.\n\n**~~Currently, there's only manual exports available.~~ But it's not hard to automate. PRs are welcome.**\n\n## Steps\n\n### Install the game\n\n[Epic Games Store](https://store.epicgames.com/en-US/p/wuthering-waves-76ebc5) or from WuWa's official website.\n\nDownload and run the launcher. Download the full game and **run it for fully download**.\n\nMake sure the game is able to show login interface, otherwise the resources may not be downloaded completely. You may need to log in and change the voice language to download other voice packs.\n\n### Unpack the resources\n\nRun [FModel](https://github.com/4sval/FModel), select the game folder `C:\\PathTo\\Epic Games\\WutheringWavesj3oFh\\Wuthering Waves Game` (Make sure it's `Wuthering Waves Game`, not any subfolders). [Find the AES key](https://github.com/ClostroOffi/wuwa-aes-archive) to the game and load the packs.\n\nExport the following folders (as raw files):\n\n-   `Client/Content/Aki/Movies`\n-   `Client/Content/Aki/WwiseAudio_Generated`\n\nYou may also need `Client/Content/Aki/ConfigDB` to know which audio is needed for the video (the videos do not have audio). But it's easy to guess from the filenames. So we just skip it. If you are curious, they are just standard SQLite database files. Use [sqlitebrowser](https://github.com/sqlitebrowser/sqlitebrowser) to open them.\n\nOr, easier, just check the publicly available [unpacked data](https://github.com/Arikatsu/WutheringWaves_Data/blob/1.3/BinData/cgVedio/videosound.json).\n\nAlso, `Client/Content/Aki/Sequence` (as properties `json`) can be used to match `CgFile` with real file path. Besides, you can guess by filename.\n\n### Parse Wwise `.bnk`\n\nGet [wwiser](https://github.com/bnnm/wwiser). Select `WwiseAudio_Generated` and generate `.txtp`.\n\nIf the `.txtp` filename contains `(3313202977=2204441813)`, it contains Girl (as main character) voice. Otherwise, if it contains `(3313202977=3111576190)`, it contains Boy voice.\n\n### Match videos with audios\n\nCheck the DB by yourself or [use public data](https://github.com/Arikatsu/WutheringWaves_Data/blob/1.3/BinData/cgVedio/videodata.json).\n\nMatch `CgName`-[`CgFile`](https://github.com/Arikatsu/WutheringWaves_Data/blob/1.3/BinData/cgVedio/videodata.json)-[`EventPath`](https://github.com/Arikatsu/WutheringWaves_Data/blob/1.3/BinData/cgVedio/videosound.json).\n\nCheck `WuWaCutscenesInfoGen_Video` for automatic generation.\n\n### Generate captions\n\nFor captions, `CgName`-[`ShowMoment`](https://github.com/Arikatsu/WutheringWaves_Data/blob/1.3/BinData/cgVedio/videocaption.json)-[`CaptionText`](https://github.com/Arikatsu/WutheringWaves_Data/blob/1.3/Textmaps/zh-Hans/multi_text/MultiText.json).\n\nCheck `WuWaCaptionsGen` for automatic generation.\n\n### Let's try it out\n\nFor example, we want to export `M0206_Nvzhu`.\n\nIn `videodata.json`:\n\n```json\n{\n    \"CgId\": 102,\n    \"CgName\": \"Start\",\n    \"GirlOrBoy\": 0,\n    \"CgFile\": \"/Game/Aki/Sequence/LevelA_Seq/Main/01/M0206/M0206_nvzhu_Mp4.M0206_nvzhu_Mp4\",\n    \"CanSkip\": true\n}\n```\n\nFind `M0206_Nvzhu.mp4` in `Movies/LevelA_Seq`.\n\nIn `videosound.json`:\n\n```json\n  {\n    \"CaptionId\": 1,\n    \"CgName\": \"Start\",\n    \"GirlOrBoy\": 2,\n    \"EventPath\": \"/Game/Aki/WwiseAudio/Events/play_sequence_music_m0206.play_sequence_music_m0206\"\n  },\n  {\n    \"CaptionId\": 2,\n    \"CgName\": \"Start\",\n    \"GirlOrBoy\": 2,\n    \"EventPath\": \"/Game/Aki/WwiseAudio/Events/play_sfx_lva_m0206.play_sfx_lva_m0206\"\n  }\n```\n\nFind `play_sequence_music_m0206.txtp`(`../Media/633609165.wem #i #b 115.654395833333`) and `play_sfx_lva_m0206.txtp`(`../Media/988310690.wem #i`).\n\n### Decode audios\n\nGet [vgmstream-cli](https://github.com/vgmstream/vgmstream).\n\nIn `txtp` folder, run the command:\n\n```shell\nvgmstream-cli \u003cTXTP Filename\u003e.txtp -o \u003cOutput Filename\u003e.wav\n```\n\n### Combine videos and audios\n\nNow you have one video and several audios. The easier way is to use Adobe Premiere or any video editing software. Put each audio in a separate track, and put the video in the track with audio. You may use `ffmpeg` but the command may be more complicated.\n\n### Export the final video\n\nCongratulations, you now have a video with audio.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsetmkt%2Fwuwa-cutscenes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunsetmkt%2Fwuwa-cutscenes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsetmkt%2Fwuwa-cutscenes/lists"}