Giter Club home page Giter Club logo

gi-cutscenes's People

Contributors

1582421598 avatar asayu233 avatar asnxthaony avatar biosnod avatar bunipendix avatar jerichosy avatar phuchptty avatar scighost avatar toahartor avatar unlimited1234 avatar wetabq avatar yakonche avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gi-cutscenes's Issues

Line jumps not correctly skipped by the SRT parser

Subtitles name found: Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy C:\Users\{UserName}\Downloads\GICutscenes\GenshinData\Subtitle\CHS\Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy_CHS.txt converted to ASS C:\Users\{UserName}\Downloads\GICutscenes\GenshinData\Subtitle\CHT\Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy_CHT.txt converted to ASS C:\Users\{UserName}\Downloads\GICutscenes\GenshinData\Subtitle\DE\Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy_DE.txt converted to ASS C:\Users\{UserName}\Downloads\GICutscenes\GenshinData\Subtitle\EN\Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy_EN.txt converted to ASS C:\Users\{UserName}\Downloads\GICutscenes\GenshinData\Subtitle\ES\Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy_ES.txt converted to ASS C:\Users\{UserName}\Downloads\GICutscenes\GenshinData\Subtitle\FR\Cs_Inazuma_EQ4002207_ShikishogunRecalling_Boy_FR.txt converted to ASS Unhandled exception: System.Exception: Dialogue block doesn't start with a number at GICutscenes.FileTypes.ASS.ParseSrt() at GICutscenes.Program.MergeFiles(String outputPath, String basename, String engine, Boolean subs) at GICutscenes.Program.BatchDemuxCommand(DirectoryInfo inputDir, DirectoryInfo outputDir, String engine, Boolean merge, Boolean subs, Boolean noCleanup) at GICutscenes.Program.<>c.<<Main>b__1_1>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext ) at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass18_0.<<UseParseErrorReporting>b__0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass13_0.<<UseHelp>b__0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass20_0.<<UseTypoCorrections>b__0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__19_0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseDirective>b__0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__6_0>d.MoveNext() --- End of stack trace from previous location --- at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass9_0.<<UseExceptionHandler>b__0>d.MoveNext()

Change track name to native language

Language setting in Genshin Impact shows in native language, GI-Cutscenes could also follow the rule.

Game screenshot:

image

Before change:

After change:

SRT parsing and conversion to ASS

ASS header example (with our desired format)

[Script Info]
WrapStyle: 0
ScaledBorderAndShadow: yes
Collisions: Normal
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,SDK_SC_Web,18,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100.0,100.0,0.0,0.0,1,0,0.5,2,10,10,20,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
// For each line of dialog, of our srt, we have
Dialogue: 0,0:00:00.19,0:00:05.31,Default,,0,0,0,,Lorem ipsum```

为什么我打开GICutscenes会闪退

我打开GICutscenes它出现了以下情况:
Required command was not provided.

Description:
A command line program playing with the cutscenes files (USM) from Genshin Impact.

Usage:
GICutscenes [command] [options]

Unhandled exception. System.IO.InvalidDataException: Failed to load configuration from file

Unhandled exception. System.IO.InvalidDataException: Failed to load configuration from file 'C:\Users\***\Downloads\GICutscenes-0.4.0-win-x64-standalone\appsettings.json'.
---> System.FormatException: Could not parse the JSON file.
---> System.Text.Json.JsonReaderException: 'M' is an invalid escapable character within a JSON string. The string should be correctly escaped. LineNumber: 2 | BytePositionInLine: 24.
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& , ExceptionResource , Byte , ReadOnlySpan1 ) at System.Text.Json.Utf8JsonReader.ConsumeStringAndValidate(ReadOnlySpan1 , Int32 )
at System.Text.Json.Utf8JsonReader.ConsumeString()
at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte )
at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.JsonDocument.Parse(ReadOnlySpan1 , JsonReaderOptions , MetadataDb& , StackRowStack& ) at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory1 , JsonReaderOptions , Byte[] , PooledByteBufferWriter )
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory1 , JsonDocumentOptions ) at System.Text.Json.JsonDocument.Parse(String , JsonDocumentOptions ) at Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser.ParseStream(Stream ) at Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream ) --- End of inner exception stack trace --- at Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream ) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean ) --- End of inner exception stack trace --- at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo ) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean ) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load() at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList1 )
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at GICutscenes.Program.Main(String[] args)

help тwт

everything seems to be correct, but maybe I misunderstood how to do it (sorry, I don't know how to do this very well)
pRuNreKEBS

Proposal: Support set encoding format in CLI

Feature Request

I'm developing an app to play cutscenes and found PCM audio cannot decode in WinUI. I can export video and audio separately and combine them into mkv files after encoding. However, it's the best way to finish all steps in CLI.

Code Design

Add two command option --audio-format and --video-format to command demuxUsm and batchDemux.

Options description:

# GICutsences.exe demuxUsm -h
Options: 
  -af, --audio-format <audio-format>           Encode audio stream in MKV file, the original format is PCM.
  -vf, --video-format <video-format>           Encode video stream in MKV file, the original format is VP9.
  # other options ...

These two options will take effect only after adding --merge. If user don't add any encoding format, the origin stream would be copied to output file. If user add encoding format, program will use ffmpeg engine instead of --mkv-engine.

Usage Example

GICutsences.exe demuxUsm <InputFile> -af aac -vf h264 -o ./
Ignore -af and -vf option because of no -m

GICutsences.exe demuxUsm <InputFile> -m -af flac -o ./
Audio stream will be encoded to flac format.

GICutsences.exe demuxUsm <InputFile> -m -af flac -e mkvmerge -o ./
Ignore -e mkvmerge, use ffmpeg insead.

Known Problem

When add --video-format, it takes a lot of time to encode video stream and shows no progress. But I think nobody would re-encode video stream.

Some sort of multithreading ?

That would clearly improve the speed of the operation. For instance, have multiple threads decoding the hca files at the same time.

3.2 version template

{
	"encAudio": true,
	"version": "3.2",
	"videoGroups": [
		{
			"version": "3022",
			"key": 0,
			"videos": ["Cs_Sumeru_AQ30221401_DinA", "Cs_Sumeru_AQ30220701_ALC_Boy", "Cs_Sumeru_AQ30220701_ALC_Girl"]
		},
		{
			"version": "3028",
			"key": 0,
			"videos": ["Cs_Sumeru_AQ_30281101_NBS_Boy", "Cs_Sumeru_AQ_30281101_NBS_Girl", "Cs_Sumeru_AQ_30280901_SKP_Boy", "Cs_Sumeru_AQ_30280901_SKP_Girl", "Cs_Sumeru_AQ_30281901_DM", "Cs_Sumeru_AQ_30280701_MS_Boy", "Cs_Sumeru_AQ_30280701_MS_Girl"]
		}
	]
}

Add video output types option

It would be great if support various output types like mp4, flv,...
and why don't use ffmpeg instead of mkvmerge ?

mkvmerge CLI wrapper

Example

Generated by the POC :

"C:/Program Files/MKVToolNix/mkvmerge.exe -o files\battlePass.mkv --track-name 0:battlePass --default-track 0:0 --forced-track 0:0 -d 0 -A -S files\battlePass.ivf --track-name 0:Chinese --language 0:chi --default-track 0:0 --forced-track 0:0 -D -a 0 -S files\battlePass_0.wav --track-name 0:English --language 0:eng --default-track 0:0 --forced-track 0:0 -D -a 0 -S files\battlePass_1.wav --track-name 0:Japanese --language 0:jpn --default-track 0:0 --forced-track 0:0 -D -a 0 -S files\battlePass_2.wav --track-name 0:Korean --language 0:kor --default-track 0:0 --forced-track 0:0 -D -a 0 -S files\battlePass_3.wav --track-name 0:Chinese (Simplified) --language 0:chi --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\CHS\battlePass_CHS.ass --track-name 0:Chinese (Traditional) --language 0:chi --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\CHT\battlePass_CHT.ass --track-name 0:German --language 0:ger --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\DE\battlePass_DE.ass --track-name 0:English --language 0:eng --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\EN\battlePass_EN.ass --track-name 0:Spanish --language 0:spa --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\ES\battlePass_ES.ass --track-name 0:French --language 0:fre --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\FR\battlePass_FR.ass --track-name 0:Indonesian --language 0:ind --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\ID\battlePass_ID.ass --track-name 0:Japanese --language 0:jpn --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\JP\battlePass_JP.ass --track-name 0:Korean --language 0:kor --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\KR\battlePass_KR.ass --track-name 0:Portuguese --language 0:por --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\PT\battlePass_PT.ass --track-name 0:Russian --language 0:rus --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\RU\battlePass_RU.ass --track-name 0:Thai --language 0:tha --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\TH\battlePass_TH.ass --track-name 0:Vietnamese --language 0:vie --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\VI\battlePass_VI.ass --attachment-description Japanese Font --attach-file fonts\ja-jp.ttf --attachment-description Chinese Font --attach-file fonts\zh-cn.ttf"

Decomposition

Video

--track-name 0:battlePass --default-track 0:0 --forced-track 0:0 -d 0 -A -S files\battlePass.ivf

Parameters :

  • -d 0 video track 0

Audio

--track-name 0:Chinese --language 0:chi --default-track 0:0 --forced-track 0:0 -D -a 0 -S files\battlePass_0.wav

Parameters :

  • -a 0 audio track 0
  • -D no video
  • -S no subtitles

Language codes :

  • Chinese (0), chi
  • English (1), eng
  • Japanese (2), jpn
  • Korean (3), kor

Subtitles

--track-name 0:Chinese (Simplified) --language 0:chi --default-track 0:0 --forced-track 0:0 -D -A -s 0 GenshinData\Subtitle\CHS\battlePass_CHS.ass

Language codes :

  • Chinese (Simplified), chi
  • Chinese (Traditional), chi
  • German, ger
  • English, eng
  • Spanish, spa
  • French, fre
  • Indonesian, ind
  • Japanese, jpn
  • Korean, kor
  • Portuguese, por
  • Russian, rus
  • Thai, tha
  • Vietnamese, vie

Attachment

--attachment-description Japanese Font --attach-file fonts\ja-jp.ttf

Subtitles repo seems down

Idk if I i not searched it hard enough, but the subtitles repo is down. Probably because the name of the repo contains Genshin, so it might have be detected by Hoyo and have been deleted. If you have some ideas about extracting them, I could host them myself

batchDemux into MKVs?

So I just batchDemux'd all the cutscenes in prep of rewatching them with friends. But, how do I turn the huge amount of files in my output folder into MKVs as described in the readme?

Thanks :)

No ASS file could be found for the subs Ambor_Readings, but two files were matched previously, please report this case.

$  ./GICutscenes batchDemux "C:\Program Files\Genshin Impact\Genshin Impact Game\YuanShen_Data\StreamingAssets\VideoAssets\StandaloneWindows64" --output './output' -m -s -e ffmpeg

Output folder : C:\Users\zhang\GI-cutscenes\src\bin\Release\net7.0\output
Finding encryption key for Ambor_Readings.usm...
key1=D53F3E0B key2=00000000
Demuxing Ambor_Readings.usm : extracting video and audio...
Converting Ambor_Readings_2.hca to wav...
Converting Ambor_Readings_1.hca to wav...
Converting Ambor_Readings_0.hca to wav...
Converting Ambor_Readings_3.hca to wav...
Extraction completed !
Merging using ffmpeg.
Subtitles name found: Ambor_Readings
Unhandled exception: System.IO.FileNotFoundException: No ASS file could be found for the subs Ambor_Readings, but two files were matched previously, please report this case.
   at GICutscenes.Program.MergeFiles(String outputPath, String basename, String engine, Boolean subs) in C:\Users\zhang\GI-cutscenes\src\Program.cs:line 285
   at GICutscenes.Program.BatchDemuxCommand(DirectoryInfo inputDir, DirectoryInfo outputDir, String engine, Boolean merge, Boolean subs, Boolean noCleanup) in C:\Users\zhang\GI-cutscenes\src\Program.cs:line 183
   at GICutscenes.Program.<>c.<<Main>b__1_1>d.MoveNext() in C:\Users\zhang\GI-cutscenes\src\Program.cs:line 135
--- End of stack trace from previous location ---
   at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass18_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass13_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass20_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__19_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__6_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass9_0.<<UseExceptionHandler>b__0>d.MoveNext()
$ cat .\appsettings.json
{
  "Settings": {
    "MkvMergePath": "",
    "FfmpegPath": "C:\\Users\\zhang\\scoop\\shims\\ffmpeg.exe",
    "SubsFolder": "C:\\Users\\zhang\\Grasscutter_Resources\\Resources\\Subtitle"
  }
}
$  ll C:\\Users\\zhang\\Grasscutter_Resources\\Resources\\Subtitle\\CHS
.rwxrwx--- MSIGE76\zhang MSIGE76\zhang 1.5 KB Tue Sep  6 21:40:58 2022  Ambor_Readings_CHS.srt
.rwxrwx--- MSIGE76\zhang MSIGE76\zhang 1.5 KB Tue Sep  6 21:40:58 2022  Ambor_Readings_CHS.txt
.rwxrwx--- MSIGE76\zhang MSIGE76\zhang 627 B  Tue Sep  6 21:40:58 2022  battlePass_CHS.srt
.rwxrwx--- MSIGE76\zhang MSIGE76\zhang 627 B  Tue Sep  6 21:40:58 2022  battlePass_CHS.txt

3.0 key update

I got the second key: 5515318060794455(version 3006)

macOS Support

Hi

I was wondering whether it would be possible for you to support macOS with this tool given that a Linux version is available.

While I am aware that there is no game client for Genshin Impact on macOS, I would still like to be able to do work related to the scope of this project using this OS.

Thanks

No ASS file could be found but two files were matched previously

I encountered an exception when re-converting some older videos. From what I can tell, an update two months ago added SRT subtitles for a lot of videos in some languages, such as Japanese. These videos had subtitles previously in SRT format, but the extension was TXT, so this causes this exception to trigger.

Subtitles name found: Ambor_Readings
Unhandled exception: System.IO.FileNotFoundException: No ASS file could be found for the subs Ambor_Readings, but two files were matched previously, please report this case.
   at GICutscenes.Program.MergeFiles(String outputPath, String basename, String engine, Boolean subs)
   at GICutscenes.Program.BatchDemuxCommand(DirectoryInfo inputDir, DirectoryInfo outputDir, String engine, Boolean merge, Boolean subs, Boolean noCleanup)
   at GICutscenes.Program.<>c.<<Main>b__1_1>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext )
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass18_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass13_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass20_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__19_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__6_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass9_0.<<UseExceptionHandler>b__0>d.MoveNext()

Command option to change font size

like the title, I hope the feature change font size because the subtitle is still a bit large.

I will try to look into it when I have time

Internal engine sometimes produces bad mkv files

Hi, I used the latest versions.json to convert all the new cutscenes, but I've been having an issue with the resultant videos. For some reason, these cutscenes always convert with problems in the video, always at the same positions. These are skips and pixelation(?) so it seems like parts of the video just aren't converting correctly? I ran a repair from the launcher in case it was my local files being the issue, but it didn't modify any of the video files. Has anyone else experienced this issue? Are these possibly issues in the original USM files or something?

Checking invalid key

Is there any way to check whether the key is invalid or not?
Ex: demuxUsm allows A and B keys, how do we know those keys are valid and will demux succeed.

Update check for versions.json and program

Small idea I had, but it could use the GitHub API to fetch the latest release and compare it to the current one.
For the versions.json file, it could check the raw file directly from the repository.

It wouldn't be automatic (as it could take some time before starting the program), but with a new option like --check-update

More clips quality

Is it possible to get clips in better quality (60fps)?. Because all clips are in 30fps now. Or this isn't possible, due to the fact that these are pre-rendered videos?

3.1 versions template

{
    "encAudio": true,
    "version": "3.1",
    "videoGroups": [
        {
            "version": "3017",
            "key": 0,
            "videos": [
                "Cs_Sumeru_AQ30170602_GF_Boy",
                "Cs_Sumeru_AQ30170602_GF_Girl",
                "Cs_Sumeru_AQ30170601_SOfS"
            ]
        },
        {
            "version": "13011",
            "key": 0,
            "videos": [
                "Cs_Sumeru_LQ130111201_EnODeGa_Boy",
                "Cs_Sumeru_LQ130111201_EnODeGa_Girl"
            ]
        },
        {
            "version": "3016",
            "key": 0,
            "videos": [
                "Cs_Sumeru_AQ30161501_DT_Boy",
                "Cs_Sumeru_AQ30161501_DT_Girl"
            ]
        },
        {
            "version": "3021",
            "key": 0,
            "videos": [
                "Cs_Sumeru_AQ302103_FOTD_Boy",
                "Cs_Sumeru_AQ302103_FOTD_Girl",
                "Cs_Sumeru_AQ302105_GOTP"
            ]
        },
        {
            "version": "40080",
            "key": 0,
            "videos": [
                "Cs_MD_EQ400800601_VinFes_Boy",
                "Cs_MD_EQ400800601_VinFes_Girl"
            ]
        },
        {
            "version": "3020",
            "key": 0,
            "videos": [
                "Cs_Sumeru_AQ302009_MOTM"
            ]
        }
    ]
}

Unable to export the Sumeru cutscenes added in version 3.0

When I choose to export the new cutscenes from Sumeru in Genshin Impact version 3.0, I get the following results, and there is no file in the Output Folder

Output folder : D:\1\GICutscenes_win-x64_standalone\output
Finding encryption key for Cs_Sumeru_AQ30130101_DofFG_Boy.usm...
Unhandled exception: System.Collections.Generic.KeyNotFoundException: Unable to find the second key in versions.json for Cs_Sumeru_AQ30130101_DofFG_Boy
at GICutscenes.Demuxer.EncryptionKeyInBLK(String videoFilename)
at GICutscenes.Demuxer.EncryptionKey(String videoFilename)
at GICutscenes.Demuxer.Demux(String filenameArg, Byte[] key1Arg, Byte[] key2Arg, String output)
at GICutscenes.Program.BatchDemuxCommand(DirectoryInfo inputDir, DirectoryInfo outputDir, String engine, Boolean merge, Boolean subs, Boolean noCleanup)
at GICutscenes.Program.<>c.<<Main>b__1_1>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext )
at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass18_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass13_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass20_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__19_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__6_0>d.MoveNext()
--- End of stack trace from previous location ---
at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass9_0.<<UseExceptionHandler>b__0>d.MoveNext()

Starting ffmpeg
Working ffmpeg...
D:/1/GICutscenes_win-x64_standalone/output\Cs_Sumeru_AQ30130101_DofFG_Boy.m2v: No such file or directory
Merging complete!

But the cutscenes I exported for version 2.7 and before were fine

These are the only four cutscenes that can't be exported properly, Look at the time is version 3.0 update
image

Key dumping starting version 2.7

From version 2.0 until version 2.6, the second key for the cutscenes of the current version was available in the dispatch's encrypted config, which was quite easy to retrieve.

However starting version 2.7, the second keys might now be sent when the game needs it, therefore either in a packet at the beginning of a cutscene during a quest or during the login. The version file (right below) also gives the several groups of cinematics that have the same second key. It would then require a rigorously taken packet capture to get the key associated with the cutscene viewed.

"videoGroups": [
	{
		"version": "1031",
		"videos": [
			"Cs_LiYue_LQ10310301_BreakThroughSpace_Boy",
			"Cs_LiYue_LQ10310301_BreakThroughSpace_Girl",
			"Cs_LiYue_LQ10310601_FusheStory"
		]
	},
	{
		"version": "11026",
		"videos": [
			"Cs_LiYue_LQ110261501_YelanStory_Boy",
			"Cs_LiYue_LQ110261501_YelanStory_Girl"
		]
	}
]

There's a strong probability that, like for the previous versions, they would give the keys in the Video Versions file (as the code would suggest). So, to get the keys from 2.7, we would have to wait for the 2.8 release.
Until 2.8 drops, I'll try to verify my theory....

Audio language in configuration?

Currently when using --merge the program uses the first audio language, which is Chinese. It would be pretty cool if we could select which audio file to automatically merge with the video, either in the configuration or before merging.

0 is Chinese, 1 is English, 2 is Japanese and 3 is Korean.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.