使用python调用ffmpeg实现从音视频提取出wav格式音频
目录
脚本作用
以目录为单位将所有ffmpeg格式的媒体流转化为wav格式。
音视频媒体流包括mp4,avi,mp3…
下载ffmpeg
ffmpeg下载链接
建立文件夹:media2wav_depend/ 将下载好的ffmpeg可执行程序导入media2wav_depend/
python模块介绍
subprocess:调用ffmpeg可执行程序
logging:打印日志,增加程序鲁棒性和可读性
python关键代码
#!/usr/bin/env/ python
#coding=utf-8
import os
os.system('echo $PATH')
import shutil
import subprocess
import logging
import sys
#we can change the audio info in cmd
#default wav info:sample_rate=16000 depth=16bits channels=1
cmd="media2wav_depend/ffmpeg-linux64-v3.3.1 -i %s -f wav -ar 16000 -ac 1 -acodec pcm_s16le %s"
logging.basicConfig(level=logging.INFO,filename='media2wav.log')
def media2wav(in_dir,out_dir):
media_list=[];
abs_out_dir=os.path.abspath(out_dir);
for root,dirs,files in os.walk(in_dir):
for f in files:
media_list.append(os.path.abspath(os.path.join(root,f)))
for f in media_list:
fo=os.path.join(abs_out_dir,''.join([os.path.splitext(os.path.basename(f))[0],'.wav']))
#cmd.format()
#print cmd
logging.info("Extrect %s from %s successfully!"%(fo,f))
try:
subprocess.call(cmd%(f,fo),shell=True)
except:
logging.error("Fail to extrect %s from %s !"%(fo,f))
continue
if __name__=='__main__':
if (len(sys.argv)<2):
print('''
usage:%s src out configFilelist
arg[1]:
input dir for orignal audio and video
arg[2]:
output dir for extracted wav
'''%sys.argv[0])
media2wav(sys.argv[1],sys.argv[2])