需求:
从mp4文件中提取wav音频文件
运行效果:
mp4:
运行后脚本后提取出的wav文件
代码:
import os.path
import moviepy.editor as mpe
# 导出格式设置
FPS = 16000 # 声明帧率
NBYTES = 16 # 声明位长
FFMPEG_PARAMS = ["-ac", "1"] # 单声道设置
def mp4_to_wav(mp4_path, wav_path):
"""
mp4 ——> wav
:param mp4_path: mp4文件的路径
:param wav_path: 提取出的wav存储目录
:return:
"""
if(os.path.exists(mp4_path) == False or os.path.exists(wav_path) == wav_path):
print("路径出错,请确认mp4_path和wav_path存在")
exit(-1)
video = mpe.VideoFileClip(mp4_path)
audio = video.audio
wav_path = os.path.join(wav_path, os.path.splitext(os.path.basename(mp4_path))[0] + ".wav")
audio.write_audiofile(wav_path, FPS, ffmpeg_params=FFMPEG_PARAMS)
print(mp4_path + '已转换成功~')
def mp4s_to_wavs(mp4_dir, wav_dir):
"""
从mp4_dir目录下的所有视频提取出wav音频
:param mp4_dir: mp4文件存储目录
:param wav_dir: 提取出的wav存储目录
:return:
"""
if(os.path.exists(mp4_dir) == False or os.path.exists(wav_dir) == False):
print("路径出错,请确认mp4_dir和wav_dir存在")
exit(-1)
for mp4_file in os.listdir(mp4_dir):
mp4_to_wav(os.path.join(mp4_dir, mp4_file), wav_dir)
if __name__ == '__main__':
# mp4_to_wav("D:\\TAL\\音视频脚本测试数据\\mp4\\1.mp4", "D:\\TAL\\音视频脚本测试数据\\wavs\\")
mp4s_to_wavs("D:\\TAL\\音视频脚本测试数据\\mp4", "D:\\TAL\\音视频脚本测试数据\\wavs")