使用python+ffmpeg批量转换格式
需求:
给定一个文件夹路径,遍历该文件夹内的所有文件以及子文件夹内的文件,当所有后缀名为wav格式的文件转换为ogg格式的文件.
import os # 获取目录下的所有文件列表
import fnmatch # 文件格式筛选模块,筛选指定格式文件
- #遍历
def dirlist(path, allfile):
filelist = os.listdir(path)
for filename in filelist:
filepath = os.path.join(path, filename)
if os.path.isdir(filepath):
dirlist(filepath, allfile)
elif fnmatch.fnmatch(filepath,'*.wav'):#判断文件格式
allfile.append(filepath)
#allfile.append('\n')
print('*'*40,filepath,'\n')
return allfile
#格式转换
def RunScript(fileList) :
print('hello world start:')
readf = open("E:\\py\\readfilename.txt", 'w+') #输出所有读入的文件
writef = open("E:\\py\\writefilename.txt", 'w+') #输出所有创建并写入的文件
code = "ffmpeg -i "
codeMid = " -acodec libvorbis "
for filename in fileList:
input = filename
print('*'*40,'\n','Begin input = ',input,'\n')
subname = input.split('.')
output = subname[0] + ".ogg"
finishcode = code + input + codeMid + output
os.system(finishcode)
print('End output = ',output,'\n')
print(input,file=readf)
print(output,file=writef)
print('hello world end')
#主程序运行
if __name__ =='__main__':
fff = open("E:\\py\\allfile.txt", 'w+')
fileDir = r'G:\SVNworking\trunc\exe\resources\media\audio'
allfile = []
dirlist(fileDir,allfile)
for name in allfile:
print(name,file=fff)
RunScript(allfile)