49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import folder_paths
|
|
import os
|
|
import numpy as np
|
|
|
|
class VideoExtractAudio:
|
|
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(s):
|
|
input_dir = os.path.join(folder_paths.get_input_directory(), 'video')
|
|
|
|
if not os.path.exists(input_dir):
|
|
os .makedirs(input_dir)
|
|
return {"required":
|
|
{
|
|
"videoPath": ("STRING", {"forceInput": True}),
|
|
"filename_prefix": ("STRING", {"default": "comfyUI"}),
|
|
},
|
|
}
|
|
|
|
CATEGORY = "lam"
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
RETURN_NAMES = ("音频地址",)
|
|
FUNCTION = "load_image"
|
|
OUTPUT_NODE = False
|
|
|
|
def load_image(self, videoPath,filename_prefix):
|
|
if os.path.exists(videoPath) == False:
|
|
raise Exception('视频文件不存在')
|
|
|
|
full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(filename_prefix, self.output_dir)
|
|
file = f"{filename}_{counter:05}_.mp3"
|
|
filePathName=os.path.join(full_output_folder, file)
|
|
#提取音频
|
|
cmd = r"ffmpeg -y -hide_banner -loglevel error -i %s %s"%(videoPath, filePathName)
|
|
os.system(cmd)
|
|
return (filePathName,)
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"VideoExtractAudio": VideoExtractAudio
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"VideoExtractAudio": "视频提取音频"
|
|
}
|