From 78a6ec111f6afa9e877360d772cbb686fe2b0886 Mon Sep 17 00:00:00 2001 From: wood chen Date: Sat, 24 May 2025 18:01:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(gui):=20=E7=A7=BB=E9=99=A4=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E8=AE=BE=E7=BD=AE=E9=80=89=E9=A1=B9=E5=B9=B6=E7=AE=80?= =?UTF-8?q?=E5=8C=96=20FFmpeg=20=E8=B0=83=E7=94=A8=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 64 ++++++++-------------------------------------------------- 1 file changed, 8 insertions(+), 56 deletions(-) diff --git a/gui.py b/gui.py index 7f7638d..5997a22 100644 --- a/gui.py +++ b/gui.py @@ -140,22 +140,6 @@ class VideoToGifConverter: self.duration_entry.pack(side="left", padx=5) ttk.Label(duration_frame, text="(留空表示全部)").pack(side="left", padx=5) - # 质量设置 - quality_frame = ttk.Frame(self.settings_frame) - quality_frame.pack(fill="x", padx=5, pady=5) - - ttk.Label(quality_frame, text="质量设置:").pack(side="left", padx=5) - self.quality_var = tk.StringVar(value="medium") - ttk.Radiobutton( - quality_frame, text="高质量", variable=self.quality_var, value="high" - ).pack(side="left", padx=5) - ttk.Radiobutton( - quality_frame, text="中等", variable=self.quality_var, value="medium" - ).pack(side="left", padx=5) - ttk.Radiobutton( - quality_frame, text="低质量", variable=self.quality_var, value="low" - ).pack(side="left", padx=5) - # 输出设置 output_frame = ttk.Frame(self.settings_frame) output_frame.pack(fill="x", padx=5, pady=5) @@ -220,16 +204,6 @@ class VideoToGifConverter: for file in files: self.files_list.insert(tk.END, file) - def get_quality_settings(self): - """根据质量设置返回 FFmpeg 参数""" - quality = self.quality_var.get() - if quality == "high": - return ["-quality", "100"] - elif quality == "medium": - return ["-quality", "75"] - else: - return ["-quality", "50"] - def validate_inputs(self): """验证输入参数""" try: @@ -335,33 +309,21 @@ class VideoToGifConverter: # 打印命令用于调试 print("调色板生成命令:", " ".join(palette_cmd)) - # 创建 startupinfo 对象(用于隐藏 CMD 窗口) - startupinfo = None - if platform.system().lower() == "windows": - startupinfo = subprocess.STARTUPINFO() - startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW - startupinfo.wShowWindow = subprocess.SW_HIDE # 运行调色板生成命令 process = subprocess.Popen( palette_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - startupinfo=startupinfo, - creationflags=( - subprocess.CREATE_NO_WINDOW + startupinfo=( + subprocess.STARTUPINFO() if platform.system().lower() == "windows" - else 0 + else None ), ) _, stderr = process.communicate() if process.returncode != 0: - error_output = "" - try: - error_output = stderr.decode("utf-8", errors="replace") - except Exception: - error_output = str(stderr) # Fallback to raw string representation - raise RuntimeError(f"调色板生成失败: {error_output}") + raise RuntimeError(f"调色板生成失败: {stderr.decode()}") # 更新状态显示 self.status_label.config( @@ -381,10 +343,6 @@ class VideoToGifConverter: if duration: gif_cmd.extend(["-t", str(float(duration))]) - # 获取并添加质量设置 - quality_settings = self.get_quality_settings() - gif_cmd.extend(quality_settings) - gif_cmd.extend( [ "-i", @@ -403,22 +361,16 @@ class VideoToGifConverter: gif_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - startupinfo=startupinfo, - creationflags=( - subprocess.CREATE_NO_WINDOW + startupinfo=( + subprocess.STARTUPINFO() if platform.system().lower() == "windows" - else 0 + else None ), ) _, stderr = process.communicate() if process.returncode != 0: - error_output = "" - try: - error_output = stderr.decode("utf-8", errors="replace") - except Exception: - error_output = str(stderr) # Fallback to raw string representation - raise RuntimeError(f"GIF生成失败: {error_output}") + raise RuntimeError(f"GIF生成失败: {stderr.decode()}") # 删除临时调色板文件 if os.path.exists(palette_path):