Files
yanlang0123-ComfyUI_Lam/py/MultiMergeAudio.py
T
2025-07-04 09:43:59 +08:00

55 lines
1.7 KiB
Python

from pydub import AudioSegment
import os
import folder_paths
class MultiMergeAudio:
def __init__(self):
self.output_dir = os.path.join(folder_paths.get_output_directory(), 'audio')
if not os.path.exists(self.output_dir):
os.makedirs(self.output_dir)
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"pathList": ("LIST",),
"filename_prefix": ("STRING", {"default": "ComfyUI"})
}
}
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("音频地址",)
FUNCTION = "merge_audios"
CATEGORY = "lam"
def merge_audios(self,pathList, filename_prefix="ComfyUI"):
"""
使用FFmpeg合并多个视频文件(需保证编码参数一致)
:param video_files: 视频文件路径列表(按顺序排列)
:param output_file: 输出文件名
"""
full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(filename_prefix, self.output_dir)
# 生成临时文件列表
filename_with_batch_num = filename.replace("%batch_num%", "0")
video_path = os.path.join(full_output_folder, filename_with_batch_num + ".mp3")
# 初始化空的音频段
combined = AudioSegment.empty()
# 逐个加载并合并文件
for mp3_file in pathList:
audio = AudioSegment.from_mp3(mp3_file)
combined += audio
# 导出合并后的文件
combined.export(video_path, format="mp3")
return (video_path, )
NODE_CLASS_MAPPINGS = {
"MultiMergeAudio": MultiMergeAudio
}
NODE_DISPLAY_NAME_MAPPINGS = {
"MultiMergeAudio": "多个音频合并"
}