You've already forked FrameTour-RenderWorker
fix(video): 解决视频overlay结束后颜色范围变化问题
- 视频overlay需要在末尾统一颜色范围,避免overlay结束后range从tv变为pc - 添加format=yuv420p和setrange=tv参数来保持一致的颜色范围 - 确保视频overlay结束后的显示效果保持稳定
This commit is contained in:
@@ -495,7 +495,9 @@ class RenderSegmentVideoHandler(BaseHandler):
|
|||||||
# 视频 overlay 使用 eof_action=pass(结束后消失),图片 overlay 使用默认行为(保持显示)
|
# 视频 overlay 使用 eof_action=pass(结束后消失),图片 overlay 使用默认行为(保持显示)
|
||||||
overlay_params = 'eof_action=pass' if is_video_overlay else ''
|
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'
|
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:
|
else:
|
||||||
return ','.join(filters) if filters else ''
|
return ','.join(filters) if filters else ''
|
||||||
|
|
||||||
@@ -604,7 +606,9 @@ class RenderSegmentVideoHandler(BaseHandler):
|
|||||||
# 视频 overlay 使用 eof_action=pass(结束后消失),图片 overlay 使用默认行为(保持显示)
|
# 视频 overlay 使用 eof_action=pass(结束后消失),图片 overlay 使用默认行为(保持显示)
|
||||||
overlay_params = 'eof_action=pass' if is_video_overlay else ''
|
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'
|
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:
|
else:
|
||||||
# 移除最后一个标签,直接输出
|
# 移除最后一个标签,直接输出
|
||||||
# 将最后一个滤镜的输出标签替换为空(直接输出)
|
# 将最后一个滤镜的输出标签替换为空(直接输出)
|
||||||
|
|||||||
Reference in New Issue
Block a user