diff --git a/handlers/render_video.py b/handlers/render_video.py index b4f0622..48d19cd 100644 --- a/handlers/render_video.py +++ b/handlers/render_video.py @@ -495,7 +495,9 @@ class RenderSegmentVideoHandler(BaseHandler): # 视频 overlay 使用 eof_action=pass(结束后消失),图片 overlay 使用默认行为(保持显示) overlay_params = 'eof_action=pass' if is_video_overlay else '' overlay_filter = f"overlay=0:0:{overlay_params}" if overlay_params else 'overlay=0:0' - return f"[0:v]{base_filters}[base];[base][1:v]{overlay_filter}" + # 视频 overlay 需要在末尾统一颜色范围,避免 overlay 结束后 range 从 tv 变为 pc + range_fix = ',format=yuv420p,setrange=tv' if is_video_overlay else '' + return f"[0:v]{base_filters}[base];[base][1:v]{overlay_filter}{range_fix}" else: return ','.join(filters) if filters else '' @@ -604,7 +606,9 @@ class RenderSegmentVideoHandler(BaseHandler): # 视频 overlay 使用 eof_action=pass(结束后消失),图片 overlay 使用默认行为(保持显示) overlay_params = 'eof_action=pass' if is_video_overlay else '' overlay_filter = f"overlay=0:0:{overlay_params}" if overlay_params else 'overlay=0:0' - filter_parts.append(f"{current_output}[1:v]{overlay_filter}") + # 视频 overlay 需要在末尾统一颜色范围,避免 overlay 结束后 range 从 tv 变为 pc + range_fix = ',format=yuv420p,setrange=tv' if is_video_overlay else '' + filter_parts.append(f"{current_output}[1:v]{overlay_filter}{range_fix}") else: # 移除最后一个标签,直接输出 # 将最后一个滤镜的输出标签替换为空(直接输出)