from typing import List from .base import EffectProcessor class SpeedEffect(EffectProcessor): """视频变速效果处理器""" def validate_params(self) -> bool: """验证参数:速度倍数""" if not self.params: return True # 默认不变速 try: speed = float(self.params) return speed > 0 except ValueError: return False def generate_filter_args(self, video_input: str, effect_index: int) -> tuple[List[str], str]: """生成变速效果的滤镜参数""" if not self.validate_params(): return [], video_input if not self.params or self.params == "1": return [], video_input # 不需要变速 speed = float(self.params) output_stream = f"[v_eff{effect_index}]" # 使用setpts进行变速 filter_args = [f"{video_input}setpts={speed}*PTS{output_stream}"] return filter_args, output_stream def get_effect_name(self) -> str: return "ospeed"