主动判断是否有音频

This commit is contained in:
2025-03-06 21:37:17 +08:00
parent 56bdad7ad1
commit dcf5f5630d
3 changed files with 35 additions and 9 deletions

View File

@ -167,6 +167,7 @@ class FfmpegTask(object):
output_args.append("1")
video_output_str = "[0:v]"
audio_output_str = ""
audio_track_index = 0
effect_index = 0
for input_file in self.input_file:
input_args.append("-i")
@ -242,19 +243,18 @@ class FfmpegTask(object):
input_index = input_args.count("-i")
input_args += MUTE_AUDIO_INPUT
filter_args.append(f"[{input_index}:a]acopy[a]")
audio_track_index += 1
audio_output_str = "[a]"
else:
audio_output_str = "[0:a]"
audio_track_index += 1
for audio in self.audios:
input_index = input_args.count("-i")
input_args.append("-i")
input_args.append(audio.replace("\\", "/"))
if audio_output_str == "":
filter_args.append(f"[{input_index}:a]acopy[a]")
audio_output_str = "[a]"
else:
filter_args.append(f"{audio_output_str}[{input_index}:a]amix[a]")
audio_output_str = "[a]"
audio_track_index += 1
filter_args.append(f"{audio_output_str}[{input_index}:a]amix[a]")
audio_output_str = "[a]"
if audio_output_str:
output_args.append("-map")
output_args.append(audio_output_str)
@ -276,6 +276,8 @@ class FfmpegTask(object):
elif isinstance(input_file, FfmpegTask):
f.write("file '" + input_file.get_output_file() + "'\n")
input_args += ["-f", "concat", "-safe", "0", "-i", _tmp_file]
from util.ffmpeg import probe_video_audio
self.mute = not probe_video_audio(_tmp_file, "concat")
output_args.append("-map")
output_args.append("0:v")
output_args.append("-c:v")