diff --git a/README.md b/README.md index 311376a..f8bef0e 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,8 @@ python auto_remove_redlight.py 01.MOV 03.MOV 05.MOV | `min_confidence` | `0.5` | OCR 信心低於此值視為雜訊 | | `smooth_window` | `5` | 中位數濾波視窗(取樣點數) | | `merge_gap` | `3.0` | 相鄰紅燈段間隔小於此秒數即合併 | -| `stop_padding` | `0.0` | 紅燈段頭尾各保留幾秒(讓剪接柔和) | +| `cut_before_stop` | `2.0` | 進入紅燈端(速度到 0)移除起點再往前幾秒,連減速進站一起砍 | +| `keep_after_stop` | `2.0` | 綠燈起步端(速度從 0 開始跑)移除終點提早幾秒,多留卡達起步畫面 | | `min_keep` | `0.8` | 保留片段短於此秒數即丟棄 | | `use_gpu` | `true` | 是否使用 GPU(無 CUDA 時自動退回 CPU) | | `reencode` | `false` | `false` = 無損快剪;`true` = 重新編碼,切點精準到幀但較慢 | diff --git a/auto_remove_redlight.py b/auto_remove_redlight.py index 8f25a82..140eee7 100644 --- a/auto_remove_redlight.py +++ b/auto_remove_redlight.py @@ -104,8 +104,11 @@ SMOOTH_WINDOW = 5 # 中位數濾波視窗(取樣點數,奇數) MERGE_GAP = 3.0 # 兩個紅燈移除段若間隔小於此秒數,視為同一段並合併 (秒) # --- 剪輯 / 輸出參數 ---------------------------------------- -STOP_PADDING = 0.0 # 移除紅燈區段時,頭尾各「保留」幾秒停止畫面 (秒) - # 0 = 完整移除整段停等;設成 0.5 可讓剪接點稍微柔和 +# 紅燈移除段的頭尾「不對稱」微調: +CUT_BEFORE_STOP = 2.0 # 進入紅燈端(速度到 0 那邊): 移除起點再往前幾秒, + # 連減速進站那段也一起砍掉 (秒) +KEEP_AFTER_STOP = 2.0 # 綠燈起步端(速度從 0 開始跑): 移除終點提早幾秒, + # 多留幾秒「卡達起步」的畫面 (秒) MIN_KEEP = 0.8 # 保留片段若短於此秒數就丟棄,避免產生超碎片段 (秒) USE_GPU = True # EasyOCR 是否用 GPU。需 CUDA + GPU 版 PyTorch。 # 設 True 時若沒有 CUDA,EasyOCR 會自動退回 CPU(不會壞) @@ -341,8 +344,10 @@ def find_keep_intervals(samples: List[Sample], duration: float, interval: float # 連續停止超過門檻 → 列為移除(等紅燈) if run_dur >= STOP_SECONDS: - rstart = run_start + STOP_PADDING - rend = run_end - STOP_PADDING + # 進入紅燈端往前多砍 CUT_BEFORE_STOP 秒(連減速進站一起砍); + # 綠燈起步端提早 KEEP_AFTER_STOP 秒結束(多留卡達起步畫面)。 + rstart = max(0.0, run_start - CUT_BEFORE_STOP) + rend = run_end - KEEP_AFTER_STOP if rend > rstart: removals.append((rstart, rend)) i = j + 1 @@ -777,7 +782,8 @@ _CONFIG_KEYS = { "min_confidence": "MIN_CONFIDENCE", "smooth_window": "SMOOTH_WINDOW", "merge_gap": "MERGE_GAP", - "stop_padding": "STOP_PADDING", + "cut_before_stop": "CUT_BEFORE_STOP", + "keep_after_stop": "KEEP_AFTER_STOP", "min_keep": "MIN_KEEP", "use_gpu": "USE_GPU", "reencode": "REENCODE", diff --git a/config.json b/config.json index 735c01c..e40169c 100644 --- a/config.json +++ b/config.json @@ -12,7 +12,8 @@ "min_confidence": 0.5, "smooth_window": 5, "merge_gap": 3.0, - "stop_padding": 0.0, + "cut_before_stop": 2.0, + "keep_after_stop": 2.0, "min_keep": 0.8, "use_gpu": true, "reencode": false,