import tkinter as tk from tkinter import filedialog import os import shutil #from moviepy.editor import VideoFileClip from moviepy import VideoFileClip def select_directory(title): root = tk.Tk() root.withdraw() # 隐藏主窗口 directory = filedialog.askdirectory(title=title) return directory def extract_audio(input_dir, output_dir): for root, dirs, files in os.walk(input_dir): # 创建对应的输出子目录 relative_path = os.path.relpath(root, input_dir) output_sub_dir = os.path.join(output_dir, relative_path) os.makedirs(output_sub_dir, exist_ok=True) for file in files: if file.endswith((".mp4",".MP4",".mov",".MOV")): input_file = os.path.join(root, file) # 提取音频 clip = VideoFileClip(input_file) audio = clip.audio # 保存音频文件,去掉视频文件扩展名 audio_file_name = os.path.splitext(file)[0] + ".mp3" output_audio_path = os.path.join(output_sub_dir, audio_file_name) audio.write_audiofile(output_audio_path) audio.close() clip.close() print(f"提取音频成功: {output_audio_path}") # 主程序 if __name__ == "__main__": # 选择输入目录 input_dir = select_directory("选择输入目录") if not input_dir: print("未选择输入目录,退出程序。") exit() # 选择输出目录 output_dir = select_directory("选择输出目录") if not output_dir: print("未选择输出目录,退出程序。") exit() # 提取音频 extract_audio(input_dir, output_dir)