You've already forked FrameTour-RenderWorker
tail效果
This commit is contained in:
@@ -308,6 +308,19 @@ class FfmpegTask(object):
|
|||||||
effect_index += 1
|
effect_index += 1
|
||||||
filter_args.append(f"{video_output_str}trim=start={skip_seconds},setpts=PTS-STARTPTS[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}]"
|
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:
|
if self.resolution:
|
||||||
filter_args.append(f"{video_output_str}scale={self.resolution.replace('x', ':')}[v]")
|
filter_args.append(f"{video_output_str}scale={self.resolution.replace('x', ':')}[v]")
|
||||||
|
Reference in New Issue
Block a user