From bd0c44b17f9768f9251bb3bd8cbcb544b60e52e1 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 12 Aug 2025 14:22:26 +0800 Subject: [PATCH] =?UTF-8?q?tail=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/ffmpeg.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/entity/ffmpeg.py b/entity/ffmpeg.py index 3cb9921..a229523 100644 --- a/entity/ffmpeg.py +++ b/entity/ffmpeg.py @@ -308,6 +308,19 @@ class FfmpegTask(object): effect_index += 1 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] + if param == '': + param = "0" + tail_seconds = float(param) + if tail_seconds > 0: + effect_index += 1 + # 首先获取视频总时长,然后计算开始时间 + # 使用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},setpts=PTS-STARTPTS[v_trim{effect_index}]") + filter_args.append(f"[v_trim{effect_index}]reverse[v_eff{effect_index}]") + video_output_str = f"[v_eff{effect_index}]" ... if self.resolution: filter_args.append(f"{video_output_str}scale={self.resolution.replace('x', ':')}[v]")