将mp4转换为音频 再将音频分割为多个定长音频
1,MP4转为音频代码如下:
import os.path
import imageio
imageio.plugins.ffmpeg.download()
import moviepy.editor as mpe
# 导出格式设置
FPS = 22050 # 声明帧率
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("C:\\Users\\xm\\Desktop\\new", "C:\\Users\\xm\\Desktop\\wav")
2,将音频分割为多个定长音频代码如下:
from pydub import AudioSegment
from pydub.utils import make_chunks
audio = AudioSegment.from_file("C:\\Users\\xm\\Desktop\\wav\\zfq.wav", "wav")
size = 4000 #切割的毫秒数 10s=10000 这里分割为每一个四秒
chunks = make_chunks(audio, size) #将文件切割为10s一块
for i, chunk in enumerate(chunks):
chunk_name = "zfq-{0}.wav".format(i)
chunk.export(chunk_name, format="wav")