From 8923bd836bdab8b7bbdf4ed104b7d045e70c66e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=94=E5=85=83=E4=B8=9C?= <897326609@qq.com> Date: Mon, 3 Nov 2025 15:28:40 +0800 Subject: [PATCH] fix ffv1 color/alpha shift (#581) * Add 'gbra' to alpha channel regex check * Add input color depth 16bit option to ffv1-mkv.json * use rgba64le by default in ffv1-mkv.json --- video_formats/ffv1-mkv.json | 5 +++-- videohelpersuite/load_video_nodes.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/video_formats/ffv1-mkv.json b/video_formats/ffv1-mkv.json index 549e727..3248e5f 100644 --- a/video_formats/ffv1-mkv.json +++ b/video_formats/ffv1-mkv.json @@ -8,10 +8,11 @@ "-g", ["gop_size", "INT", {"default": 1, "min": 1, "max": 300, "step": 1}], "-slices", ["slices", ["4", "6", "9", "12", "16", "20", "24", "30"], {"default": "16"}], "-slicecrc", ["slicecrc", ["0", "1"], {"default": "1"}], - "-pix_fmt", ["pix_fmt", ["bgra", "rgba64le", "yuv420p", "yuv422p", "yuv444p", "yuva420p", "yuva422p", "yuva444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuv420p12le", "yuv422p12le", "yuv444p12le", "yuv420p14le", "yuv422p14le", "yuv444p14le", "yuv420p16le", "yuv422p16le", "yuv444p16le", "gray", "gray10le", "gray12le", "gray16le"], {"default": "bgra"}] + "-pix_fmt", ["pix_fmt", ["rgba64le", "bgra", "yuv420p", "yuv422p", "yuv444p", "yuva420p", "yuva422p", "yuva444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuv420p12le", "yuv422p12le", "yuv444p12le", "yuv420p14le", "yuv422p14le", "yuv444p14le", "yuv420p16le", "yuv422p16le", "yuv444p16le", "gray", "gray10le", "gray12le", "gray16le"], {"default": "rgba64le"}] ], "audio_pass": ["-c:a", "flac"], "save_metadata": ["save_metadata", "BOOLEAN", {"default": true}], "trim_to_audio": ["trim_to_audio", "BOOLEAN", {"default": false}], + "input_color_depth": "16bit", "extension": "mkv" -} \ No newline at end of file +} diff --git a/videohelpersuite/load_video_nodes.py b/videohelpersuite/load_video_nodes.py index 409e59a..b23e40f 100644 --- a/videohelpersuite/load_video_nodes.py +++ b/videohelpersuite/load_video_nodes.py @@ -201,7 +201,7 @@ def ffmpeg_frame_generator(video, force_rate, frame_load_cap, start_time, fps_base = float(fps_match.group(1)) else: fps_base = 1 - alpha = re.search("(yuva|rgba|bgra)", line) is not None + alpha = re.search("(yuva|rgba|bgra|gbra)", line) is not None break else: raise Exception("Failed to parse video/image information. FFMPEG output:\n" + lines)