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