From d0178fda4fce9e6965c5e957c59f5e039b2243cc Mon Sep 17 00:00:00 2001 From: YohoYang Date: Fri, 14 Feb 2025 00:23:08 +0800 Subject: [PATCH] =?UTF-8?q?v1.0.18=EF=BC=8C=E4=BF=AE=E6=AD=A3BUG=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VSGUI/MainWindow.xaml.cs | 75 +++++++++++++++++------------ VSGUI/Windows/EncoderWindow.xaml.cs | 4 +- 2 files changed, 45 insertions(+), 34 deletions(-) diff --git a/VSGUI/MainWindow.xaml.cs b/VSGUI/MainWindow.xaml.cs index 4daf262..204a013 100644 --- a/VSGUI/MainWindow.xaml.cs +++ b/VSGUI/MainWindow.xaml.cs @@ -29,7 +29,7 @@ public partial class MainWindow public static string binpath = Directory.GetCurrentDirectory() + @"\bin"; public static string envpath = null; private bool forcedStop = false; - private string coreversion = "v1.0.15"; + private string coreversion = "v1.0.18"; public static string logBoxStr = ""; private string[] videoMultiInputLists, audioMultiInputLists; @@ -43,13 +43,13 @@ private void Init() { LanguageApi.Init(); - //System.Diagnostics.Process[] thisProcesses = System.Diagnostics.Process.GetProcessesByName("VSGUI");//获取指定的进程名 - //if (thisProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动 - //{ - // MessageBox.Show(LanguageApi.FindRes("programNotAllowedToRunRepeatedly"), LanguageApi.FindRes("error")); - // this.Close(); - // return; - //} + System.Diagnostics.Process[] thisProcesses = System.Diagnostics.Process.GetProcessesByName("VSGUI");//获取指定的进程名 + if (thisProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动 + { + MessageBox.Show(LanguageApi.FindRes("programNotAllowedToRunRepeatedly"), LanguageApi.FindRes("error")); + this.Close(); + return; + } windowcontrol.Title = windowcontrol.Title + " " + coreversion; coreversionshowtextblock.Text = coreversion; @@ -281,14 +281,14 @@ private void TextBox_PreviewDrop(object sender, DragEventArgs e) var controlname = ((TextBox)sender).Name; var toTextBox = (TextBox)this.FindName(controlname); - if (new [] { "simplecapinputbox", "simpleasspathinputbox" }.Contains(controlname)) + if (new[] { "simplecapinputbox", "simpleasspathinputbox" }.Contains(controlname)) { string localstr = toTextBox.Text ?? ""; localstr += string.Join("|", filename); toTextBox.Text = localstr; return; } - + if (controlname == "simplevideoinputbox") { ((TextBox)sender).Text = string.Join("|", ((TextBox)sender).Text, string.Join("|", filename)); @@ -303,7 +303,8 @@ private void TextBox_PreviewDrop(object sender, DragEventArgs e) } else { - var filterList = filename.Select(name => { + var filterList = filename.Select(name => + { QueueApi.SimpleEncodeAudioFileInputCheck(name, out bool isError); if (isError) { @@ -464,7 +465,7 @@ private void OpenMultiFileSelect_Click(object sender, RoutedEventArgs e) } - if (new [] { "simplecapinputbox", "simpleasspathinputbox" }.Contains(controlname)) + if (new[] { "simplecapinputbox", "simpleasspathinputbox" }.Contains(controlname)) { string localstr = toTextBox.Text ?? ""; localstr += string.Join("|", files); @@ -487,7 +488,8 @@ private void OpenMultiFileSelect_Click(object sender, RoutedEventArgs e) } else { - var filterList = files.Select(name => { + var filterList = files.Select(name => + { QueueApi.SimpleEncodeAudioFileInputCheck(name, out bool isError); if (isError) { @@ -728,13 +730,14 @@ private void SimpleVideoInputUpdate() { this.simpleAddQueueBtn.IsEnabled = true; this.simplePreviewBtn.IsEnabled = true; - var filterList = list.Where(item => { + var filterList = list.Where(item => + { var a = item["videoinput"]; var b = item["audioinput"]; if (item["videoinput"] != "") { var outputfilename = UpdateEncoderSuffix("simpleencode", item["videoinput"], @"_vsgui." + simplemuxsuffixbox.Text.ToLower(), true); - if(list.Count > 1) + if (list.Count > 1) { if (string.IsNullOrWhiteSpace(simplevideooutputdirbox.Text)) { @@ -751,7 +754,7 @@ private void SimpleVideoInputUpdate() } return false; }).ToList(); - + simplevideoinputbox.Text = string.Join("|", filterList.Select(item => item["videoinput"])); simpleaudioinputbox.Text = string.Join("|", filterList.Select(item => item["audioinput"])); this.simplevideoinputPb.Visibility = Visibility.Collapsed; @@ -786,7 +789,7 @@ private void SaveFileDirSelect_Click(object sender, RoutedEventArgs e) var toTextBox = (TextBox)this.FindName(controlname); toTextBox.Text = CallSaveDirDialog(); } - + /// /// 保存文件按钮事件 @@ -1108,13 +1111,13 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) MessageBoxApi.Show(LanguageApi.FindRes("videoOutputIsEmpty"), LanguageApi.FindRes("error")); return; } - + if (simplevideoencoderbox.SelectedIndex == -1) { MessageBoxApi.Show(LanguageApi.FindRes("noEncoderProfilesSelected"), LanguageApi.FindRes("error")); return; } - + if (simpleaudioinputbox.Text == "") { MessageBoxApi.Show(LanguageApi.FindRes("audioInputIsEmpty"), LanguageApi.FindRes("error")); @@ -1136,8 +1139,8 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) var videoInputs = simplevideoinputbox.Text.Split('|'); var audioInputs = simpleaudioinputbox.Text.Split('|'); - string[] asspathList = !string.IsNullOrWhiteSpace(simpleasspathinputbox.Text) ? simpleasspathinputbox.Text.Split("|") : new string[] {}; - string[] capinputList = !string.IsNullOrWhiteSpace(simplecapinputbox.Text) ? simplecapinputbox.Text.Split("|") : new string[] {}; + string[] asspathList = !string.IsNullOrWhiteSpace(simpleasspathinputbox.Text) ? simpleasspathinputbox.Text.Split("|") : new string[] { }; + string[] capinputList = !string.IsNullOrWhiteSpace(simplecapinputbox.Text) ? simplecapinputbox.Text.Split("|") : new string[] { }; if (capinputList.Length > 0) { @@ -1147,7 +1150,7 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) MessageBoxApi.Show(LanguageApi.FindRes("checkChapterLengthError"), LanguageApi.FindRes("error")); return; } - + foreach (var se in capinputList) { if (!File.Exists(se)) @@ -1161,8 +1164,8 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) return; } } - - + + } if (simpleresolutionbox.SelectedIndex != 0 && Regex.Matches(simpleresolutionbox.Text.ToUpper(), @"\d+P").Count < 1) { @@ -1172,7 +1175,7 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) if (asspathList.Length > 0) { // 单视频文件允许多字幕 多视频文件不允许多字幕 只能1对1 - if(videoInputs.Length > 1) + if (videoInputs.Length > 1) { if (asspathList.Length != videoInputs.Length) { @@ -1180,7 +1183,7 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) return; } } - + foreach (var item in asspathList) { @@ -1205,7 +1208,7 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) xyvsfilterEnable = "true"; } - if(audioInputs.Length > videoInputs.Length) + if (audioInputs.Length > videoInputs.Length) { audioInputs = audioInputs.Take(videoInputs.Length).ToArray(); } @@ -1214,7 +1217,13 @@ private void SimpleAutoEncodeButton_Click(object sender, RoutedEventArgs e) { var vinput = videoInputs[i]; var ainput = audioInputs[i]; - var assinput = asspathList[i]; + + string assinput = ""; + if (asspathList.Length > i) //增加容错,考虑不输入字幕的情况 + { + assinput = asspathList[i]; + } + string result = ProcessApi.RunSyncProcess(MainWindow.binpath + @"\tools\mediainfo\", @"MediaInfo.exe" + " " + "\"" + ainput + "\""); bool isAudio = true; if (result != null) @@ -1321,7 +1330,8 @@ internal void StartQueueJob(string queueid, bool isSingle = false) { //使用实时的配置 clipath = envpath; - } else if (QueueApi.GetQueueListitem(queueid, "type") == "audio") + } + else if (QueueApi.GetQueueListitem(queueid, "type") == "audio") { } @@ -1475,8 +1485,9 @@ private void ClearFinishedQueue_Click(object sender, RoutedEventArgs e) { var list = QueueApi.GetQueueMember(); var flag = false; - var final_list = (from item in list group item by item.Index into p - select (Key: p.Key, Data: p.ToList())).ToList(); + var final_list = (from item in list + group item by item.Index into p + select (Key: p.Key, Data: p.ToList())).ToList(); foreach (var (key, data) in final_list) { if (data.All(item => item.Status == "finish")) @@ -1492,7 +1503,7 @@ private void ClearFinishedQueue_Click(object sender, RoutedEventArgs e) QueueApi.SaveQueueList(); } } - + /// /// 停止并清除全部任务 /// diff --git a/VSGUI/Windows/EncoderWindow.xaml.cs b/VSGUI/Windows/EncoderWindow.xaml.cs index 0e3050b..09026fa 100644 --- a/VSGUI/Windows/EncoderWindow.xaml.cs +++ b/VSGUI/Windows/EncoderWindow.xaml.cs @@ -118,7 +118,7 @@ private void encoderbox_SelectionChanged(object sender, SelectionChangedEventArg encodertypebox.Text = LanguageApi.FindRes("p009"); } else - if (GetEncoderData(jsonObj, selectIndex, "encodername") == "p") + if (GetEncoderData(jsonObj, selectIndex, "encodername") == "copy") { encodertypebox.Text = LanguageApi.FindRes("p053"); } @@ -475,7 +475,7 @@ private void Savebutton_Click(object sender, RoutedEventArgs e) } else if (encodertypebox.Text == LanguageApi.FindRes("p053")) { - obj.Add("encodername", "p"); + obj.Add("encodername", "copy"); } else {