尝试传入resolution,不使用scale自适应模板

This commit is contained in:
Jerry Yan 2025-04-28 14:54:30 +08:00
parent f139fbccd7
commit 1603be9157
3 changed files with 14 additions and 2 deletions

3
app.py
View File

@ -1,3 +1,5 @@
import time
import flask import flask
import config import config
@ -17,6 +19,7 @@ app = flask.Flask(__name__)
def do_task(task_id): def do_task(task_id):
task_info = api.get_task_info(task_id) task_info = api.get_task_info(task_id)
biz.task.start_task(task_info) biz.task.start_task(task_info)
time.sleep(1) # for telemetry upload traces
return "OK" return "OK"

View File

@ -33,6 +33,7 @@ def parse_ffmpeg_task(task_info, template_info):
logger.info("because only_if exist, placeholder: %s not exist, skip part: %s", only_if, part) logger.info("because only_if exist, placeholder: %s not exist, skip part: %s", only_if, part)
continue continue
sub_ffmpeg_task = FfmpegTask(source) sub_ffmpeg_task = FfmpegTask(source)
sub_ffmpeg_task.resolution = template_info.get("video_size", "")
sub_ffmpeg_task.annexb = True sub_ffmpeg_task.annexb = True
sub_ffmpeg_task.ext_data = find_placeholder_params(part.get('source'), task_params) or {} sub_ffmpeg_task.ext_data = find_placeholder_params(part.get('source'), task_params) or {}
sub_ffmpeg_task.frame_rate = template_info.get("frame_rate", 25) sub_ffmpeg_task.frame_rate = template_info.get("frame_rate", 25)
@ -48,6 +49,7 @@ def parse_ffmpeg_task(task_info, template_info):
tasks.append(sub_ffmpeg_task) tasks.append(sub_ffmpeg_task)
output_file = "out_" + str(time.time()) + ".mp4" output_file = "out_" + str(time.time()) + ".mp4"
task = FfmpegTask(tasks, output_file=output_file) task = FfmpegTask(tasks, output_file=output_file)
task.resolution = template_info.get("video_size", "")
overall = template_info.get("overall_template") overall = template_info.get("overall_template")
task.center_cut = template_info.get("crop_mode", None) task.center_cut = template_info.get("crop_mode", None)
task.frame_rate = template_info.get("frame_rate", 25) task.frame_rate = template_info.get("frame_rate", 25)

View File

@ -33,6 +33,7 @@ class FfmpegTask(object):
self.mute = True self.mute = True
self.speed = 1 self.speed = 1
self.frame_rate = 25 self.frame_rate = 25
self.resolution = None
self.subtitles = [] self.subtitles = []
self.luts = [] self.luts = []
self.audios = [] self.audios = []
@ -239,6 +240,12 @@ class FfmpegTask(object):
input_index = input_args.count("-i") input_index = input_args.count("-i")
input_args.append("-i") input_args.append("-i")
input_args.append(overlay) input_args.append(overlay)
if self.resolution:
filter_args.append(f"{video_output_str}scale={self.resolution.replace('x', ':')}[v]")
else:
if os.getenv("OLD_FFMPEG"):
filter_args.append(f"{video_output_str}[{input_index}:v]scale2ref=iw:ih[v]")
else:
filter_args.append(f"{video_output_str}[{input_index}:v]scale=rw:rh[v]") filter_args.append(f"{video_output_str}[{input_index}:v]scale=rw:rh[v]")
filter_args.append(f"[v][{input_index}:v]overlay=1:eof_action=endall[v]") filter_args.append(f"[v][{input_index}:v]overlay=1:eof_action=endall[v]")
video_output_str = "[v]" video_output_str = "[v]"