修复amix降低声音的问题,修复reencode_to_annexb不添加音轨的问题

This commit is contained in:
Jerry Yan 2025-03-10 10:13:30 +08:00
parent dcf5f5630d
commit cf43e6d549
2 changed files with 12 additions and 7 deletions

View File

@ -253,7 +253,7 @@ class FfmpegTask(object):
input_args.append("-i")
input_args.append(audio.replace("\\", "/"))
audio_track_index += 1
filter_args.append(f"{audio_output_str}[{input_index}:a]amix[a]")
filter_args.append(f"{audio_output_str}[{input_index}:a]amix=duration=shortest:dropout_transition=0:normalize=0[a]")
audio_output_str = "[a]"
if audio_output_str:
output_args.append("-map")
@ -295,7 +295,7 @@ class FfmpegTask(object):
input_args.append("-i")
input_args.append(audio.replace("\\", "/"))
audio_track_index += 1
filter_args.append(f"{audio_output_str}[{input_index}:a]amix[a]")
filter_args.append(f"{audio_output_str}[{input_index}:a]amix=duration=shortest:dropout_transition=0:normalize=0[a]")
audio_output_str = "[a]"
if audio_output_str:
output_args.append("-map")

View File

@ -5,7 +5,7 @@ import subprocess
from datetime import datetime
from typing import Optional, IO
from entity.ffmpeg import FfmpegTask, ENCODER_ARGS, VIDEO_ARGS, AUDIO_ARGS
from entity.ffmpeg import FfmpegTask, ENCODER_ARGS, VIDEO_ARGS, AUDIO_ARGS, MUTE_AUDIO_INPUT
from telemetry import get_tracer
logger = logging.getLogger(__name__)
@ -17,9 +17,9 @@ def to_annexb(file):
return file
logger.info("ToAnnexb: %s", file)
ffmpeg_process = subprocess.run(["ffmpeg", "-y", "-hide_banner", "-i", file,
"-f", "lavfi", "-i", "anullsrc=cl=stereo:r=48000",
*MUTE_AUDIO_INPUT,
"-map", "0:v", "-map", "1:a",
"-c:v", "copy", "-bsf:v", "h264_mp4toannexb",
"-c:v", "copy", "-bsf:v", "h264_mp4toannexb", "-shortest",
"-c:a", "aac", "-b:a", "128k", "-ar", "48000", "-ac", "2",
"-f", "mpegts", file+".ts"])
span.set_attribute("ffmpeg.args", json.dumps(ffmpeg_process.args))
@ -38,8 +38,13 @@ def re_encode_and_annexb(file):
if not os.path.exists(file):
return file
logger.info("ReEncodeAndAnnexb: %s", file)
ffmpeg_process = subprocess.run(["ffmpeg", "-y", "-hide_banner", "-i", file, *VIDEO_ARGS, *AUDIO_ARGS, *ENCODER_ARGS, "-bsf:v", "h264_mp4toannexb",
"-f", "mpegts", file +".ts"])
ffmpeg_process = subprocess.run(["ffmpeg", "-y", "-hide_banner", "-i", file,
*MUTE_AUDIO_INPUT,
"-map", "0:v", "-map", "1:a",
*VIDEO_ARGS, "-bsf:v", "h264_mp4toannexb",
*AUDIO_ARGS, "-bsf:a", "setts=pts=DTS",
*ENCODER_ARGS, "-shortest",
"-f", "mpegts", file + ".ts"])
span.set_attribute("ffmpeg.args", json.dumps(ffmpeg_process.args))
logger.info("ReEncodeAndAnnexb: %s, returned: %s", file, ffmpeg_process.returncode)
span.set_attribute("ffmpeg.code", ffmpeg_process.returncode)