diff --git a/app.py b/app.py index 316fec6..6cece27 100644 --- a/app.py +++ b/app.py @@ -1,3 +1,5 @@ +import time + import flask import config @@ -17,8 +19,9 @@ app = flask.Flask(__name__) def do_task(task_id): task_info = api.get_task_info(task_id) biz.task.start_task(task_info) + time.sleep(1) # for telemetry upload traces return "OK" if __name__ == '__main__': - app.run(host="0.0.0.0", port=9998) \ No newline at end of file + app.run(host="0.0.0.0", port=9998) diff --git a/biz/ffmpeg.py b/biz/ffmpeg.py index 8b66413..246a382 100644 --- a/biz/ffmpeg.py +++ b/biz/ffmpeg.py @@ -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) continue sub_ffmpeg_task = FfmpegTask(source) + sub_ffmpeg_task.resolution = template_info.get("video_size", "") sub_ffmpeg_task.annexb = True 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) @@ -48,6 +49,7 @@ def parse_ffmpeg_task(task_info, template_info): tasks.append(sub_ffmpeg_task) output_file = "out_" + str(time.time()) + ".mp4" task = FfmpegTask(tasks, output_file=output_file) + task.resolution = template_info.get("video_size", "") overall = template_info.get("overall_template") task.center_cut = template_info.get("crop_mode", None) task.frame_rate = template_info.get("frame_rate", 25) diff --git a/entity/ffmpeg.py b/entity/ffmpeg.py index 022a057..9fc7a2c 100644 --- a/entity/ffmpeg.py +++ b/entity/ffmpeg.py @@ -33,6 +33,7 @@ class FfmpegTask(object): self.mute = True self.speed = 1 self.frame_rate = 25 + self.resolution = None self.subtitles = [] self.luts = [] self.audios = [] @@ -239,7 +240,13 @@ class FfmpegTask(object): input_index = input_args.count("-i") input_args.append("-i") input_args.append(overlay) - filter_args.append(f"{video_output_str}[{input_index}:v]scale=rw:rh[v]") + 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"[v][{input_index}:v]overlay=1:eof_action=endall[v]") video_output_str = "[v]" for subtitle in self.subtitles: