Spaces:
Sleeping
Sleeping
from pathlib import Path | |
from moviepy.editor import * | |
import sys | |
# print('argv[1]:' + str(sys.argv[1])) | |
import os | |
from pydub import AudioSegment | |
def mp4_to_mp3(mp4_uri): | |
# Load the mp4 file | |
video = VideoFileClip(mp4_uri) | |
# Extract audio from video | |
mp3_uri = mp4_uri + ".mp3" | |
video.audio.write_audiofile(mp3_uri) | |
return mp3_uri | |
def audio_to_wav(wav_uri, out_sample_rate=16000): | |
src = wav_uri | |
dst = wav_uri + ".wav" | |
if os.path.exists(dst): os.remove(dst) | |
# convert wav to mp3 | |
sound = AudioSegment.from_file(src) | |
sound = sound.set_frame_rate(out_sample_rate) | |
sound.export(dst, format="wav") | |
print(' audio_to_wav: ', str(dst)) | |
return dst | |
def wav_to_mp3(wav_uri): | |
mp3_uri = wav_uri + '.mp3' | |
AudioSegment.from_wav(wav_uri).export(mp3_uri, format='mp3') | |
return mp3_uri | |
# def wav_to_mp3_bitrate(wav_uri, bitrate): | |
# mp3_uri = wav_uri + '.mp3' | |
# AudioSegment.from_wav(wav_uri).export(mp3_uri, format='mp3', bitrate=bitrate) | |
# return mp3_uri | |
# 处理命令行 | |
if __name__ == "__main__": | |
# 获取命令行参数 | |
if len(sys.argv) < 2: | |
print("用法:python to_mp3.py <文件或通配符>") | |
sys.exit(1) | |
# 处理文件或通配符参数 | |
bitrate = -1 | |
if len(sys.argv) > 2: | |
bitrate = sys.argv[2] | |
for input_file in sys.argv[1:]: | |
# print("input_file:" + str(input_file)) | |
# input_files.extend(Path().glob(input_file)) | |
if input_file.lower().endswith(".wav"): | |
res = wav_to_mp3(str(input_file)) | |
print(res) | |
elif input_file.lower().endswith(".mp4"): | |
res = mp4_to_mp3(str(input_file)) | |
print(res) | |
# # 转换每个文件为 MP3 文件 | |
# for input_file in input_files: | |
# if input_file.suffix.lower() == ".wav": | |
# res = wav_to_mp3(str(input_file)) | |
# print(res) | |
# elif input_file.suffix.lower() == ".mp4": | |
# res = mp4_to_mp3(str(input_file)) | |
# print(res) | |