diff --git a/entity/ffmpeg.py b/entity/ffmpeg.py index 660fc95..fd195d3 100644 --- a/entity/ffmpeg.py +++ b/entity/ffmpeg.py @@ -329,7 +329,7 @@ class FfmpegTask(object): skip_seconds = float(param) if skip_seconds > 0: effect_index += 1 - filter_args.append(f"{video_output_str}trim=start={skip_seconds}[v_eff{effect_index}]") + filter_args.append(f"{video_output_str}trim=start={skip_seconds},setpts=PTS-STARTPTS[v_eff{effect_index}]") video_output_str = f"[v_eff{effect_index}]" elif effect.startswith("tail:"): param = effect.split(":", 2)[1] @@ -342,7 +342,7 @@ class FfmpegTask(object): # 使用reverse+trim+reverse的方法来精确获取最后N秒 filter_args.append(f"{video_output_str}reverse[v_rev{effect_index}]") filter_args.append(f"[v_rev{effect_index}]trim=duration={tail_seconds}[v_trim{effect_index}]") - filter_args.append(f"[v_trim{effect_index}]reverse[v_eff{effect_index}]") + filter_args.append(f"[v_trim{effect_index}]reverse,setpts=PTS-STARTPTS[v_eff{effect_index}]") video_output_str = f"[v_eff{effect_index}]" elif effect.startswith("show:"): param = effect.split(":", 2)[1] @@ -351,7 +351,7 @@ class FfmpegTask(object): show_seconds = float(param) if show_seconds > 0: effect_index += 1 - filter_args.append(f"{video_output_str}trim=end={show_seconds}[v_eff{effect_index}]") + filter_args.append(f"{video_output_str}trim=end={show_seconds},setpts=PTS-STARTPTS[v_eff{effect_index}]") video_output_str = f"[v_eff{effect_index}]" elif effect.startswith("grid4:"): param = effect.split(":", 2)[1]