feat: 添加mp4转mp3的脚本
该脚本使用tkinter选择输入和输出目录,并利用moviepy库从mp4文件中提取音频并保存为mp3文件。此功能适用于批量处理视频文件中的音频提取。
This commit is contained in:
		
							
								
								
									
										49
									
								
								mp4tomp3.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								mp4tomp3.py
									
									
									
									
									
										Normal file
									
								
							| @@ -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) | ||||||
		Reference in New Issue
	
	Block a user