From 372de640cad14d9e7577ac851edf6b239c8d830c Mon Sep 17 00:00:00 2001 From: reven Date: Mon, 27 Dec 2021 11:12:23 +1300 Subject: [PATCH] added audio track set language node --- BasicNodes/BasicNodes.csproj | Bin 2164 -> 2164 bytes BasicNodes/File/CopyFile.cs | 8 +++ BasicNodes/File/MoveFile.cs | 8 ++- BasicNodes/Functions/Function.cs | 2 +- VideoNodes/VideoNodes.csproj | Bin 2274 -> 2274 bytes VideoNodes/VideoNodes.en.json | 8 +++ .../VideoNodes/AudioTrackSetLanguage.cs | 68 ++++++++++++++++++ 7 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 VideoNodes/VideoNodes/AudioTrackSetLanguage.cs diff --git a/BasicNodes/BasicNodes.csproj b/BasicNodes/BasicNodes.csproj index c51fe385dc9077fcc2dbf7bbed18d705cac96f56..7c90d3090755195400d5c16d2f06aa7f32536470 100644 GIT binary patch delta 24 dcmew&@I_$53r1#B27}438ACzzW@jctHUM#v2Xz1d delta 24 dcmew&@I_$53r1!W2J^|U8ACzzW@jctHUM%32Y~

2; + + public override string Icon => "fas fa-comment-dots"; + + [Required] + [Text(1)] + public string Language { get; set; } + + public override int Execute(NodeParameters args) + { + try + { + VideoInfo videoInfo = GetVideoInfo(args); + if (videoInfo == null) + return -1; + + string ffmpegExe = GetFFMpegExe(args); + if (string.IsNullOrEmpty(ffmpegExe)) + return -1; + + List ffArgs = new List(); + + int index = 0; + foreach(var at in videoInfo.AudioStreams) + { + if (string.IsNullOrEmpty(at.Language)) + { + ffArgs.Add($"-metadata:s:a:{index} language={Language.ToLower()}"); + } + ++index; + } + if (ffArgs.Count == 0) + return 2; // nothing to do + + + ffArgs.Insert(0, $"-map 0 -c copy"); + + string ffArgsLine = string.Join(" ", ffArgs); + + string extension = new FileInfo(args.WorkingFile).Extension; + if(extension.StartsWith(".")) + extension = extension.Substring(1); + args.Logger?.DLog("Working file: " + args.WorkingFile); + args.Logger?.DLog("Extension: " + extension); + + if (Encode(args, ffmpegExe, ffArgsLine, extension) == false) + return -1; + + return 1; + } + catch (Exception ex) + { + args.Logger?.ELog("Failed processing VideoFile: " + ex.Message); + return -1; + } +} + } +}