From 0209c5de3f120f466d684d6be45afc97f2e45a85 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 8 Aug 2025 11:35:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E7=8B=AC=E6=B8=B2=E6=9F=93=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- constant/__init__.py | 3 ++- util/ffmpeg.py | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/constant/__init__.py b/constant/__init__.py index a7be96d..e2419dc 100644 --- a/constant/__init__.py +++ b/constant/__init__.py @@ -4,5 +4,6 @@ SUPPORT_FEATURE = ( 'hevc_encode', 'rapid_download', 'rclone_upload', + 'custom_re_encode', ) -SOFTWARE_VERSION = '0.0.3' +SOFTWARE_VERSION = '0.0.4' diff --git a/util/ffmpeg.py b/util/ffmpeg.py index 4589482..7ec3a05 100644 --- a/util/ffmpeg.py +++ b/util/ffmpeg.py @@ -20,13 +20,23 @@ def re_encode_and_annexb(file): return file logger.info("ReEncodeAndAnnexb: %s", file) has_audio = not not probe_video_audio(file) + # 优先使用RE_ENCODE_VIDEO_ARGS环境变量,其次使用默认的VIDEO_ARGS + if os.getenv("RE_ENCODE_VIDEO_ARGS", False): + _video_args = tuple(os.getenv("RE_ENCODE_VIDEO_ARGS", "").split(" ")) + else: + _video_args = VIDEO_ARGS + # 优先使用RE_ENCODE_ENCODER_ARGS环境变量,其次使用默认的ENCODER_ARGS + if os.getenv("RE_ENCODE_ENCODER_ARGS", False): + _encoder_args = tuple(os.getenv("RE_ENCODE_ENCODER_ARGS", "").split(" ")) + else: + _encoder_args = ENCODER_ARGS ffmpeg_process = subprocess.run(["ffmpeg", "-y", "-hide_banner", "-i", file, *(set() if has_audio else MUTE_AUDIO_INPUT), "-fps_mode", "cfr", "-map", "0:v", "-map", "0:a" if has_audio else "1:a", - *VIDEO_ARGS, "-bsf:v", get_mp4toannexb_filter(), + *_video_args, "-bsf:v", get_mp4toannexb_filter(), *AUDIO_ARGS, "-bsf:a", "setts=pts=DTS", - *ENCODER_ARGS, "-shortest", "-fflags", "+genpts", + *_encoder_args, "-shortest", "-fflags", "+genpts", "-f", "mpegts", file + ".ts"]) logger.info(" ".join(ffmpeg_process.args)) span.set_attribute("ffmpeg.args", json.dumps(ffmpeg_process.args))