diff --git a/mp4tomp3.py b/mp4tomp3.py new file mode 100644 index 0000000..aeb9839 --- /dev/null +++ b/mp4tomp3.py @@ -0,0 +1,49 @@ +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) \ No newline at end of file