1.将不同音频文件格式进行转换的代码
import subprocess[subprocess是python中新增的一个模块,它允许你生成新的进程,连接到它们的input/output/error管道,并获取它们的返回状态码]
infile = 'E:兼职caoencaoen_jx_1_20_5.m4a' #要进行转换的音频文件
outfile = 'E:兼职caoen_jx_1_20_5.wav' #生成的音频文件
subprocess.call(['ffmpeg', '-i', infile, outfile])[这个方法的作用是执行一些命令行的命令,例如sh xxx.sh,java -jar xxx.jar等]会开启一个子进程去执行,并且等待子进程结束才继续执行其他的,使用
起来非常方便,就是需要注意一些小细节]
参数
-i “文件的名称” (输入文件是和ffmpeg在同一目录下的文件,可以自己加路径,改名字)
2.读取文件中的音频文件并进行MD5值,查看音频文件是否内容一样
import os
import wave
import hashlib
filepath = "E:FFOutput" # 添加路径
filename = os.listdir(filepath) # 得到文件夹下的所有文件名称
list = [] #将获取的md5值依次放入到列表中
Aname = [] #将从文件路径下获取的文件名称和路径依次和md5值相对应的放在一起
for file in filename:
a = filepath + "\"+file #将路径和文件名称拼接在一起
Aname.append(a)
f = wave.open(a,"rb") #使用wave.open 打开wav文件
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 声道数 量化位数 采样频率 采样点数
# print(nchannels)
# print(sampwidth)
# print(framerate)
# print(nframes)
str_data = f.readframes(nframes) #读取音频,字符串格式也有的解释为读取波形数据
#str_data会返回一段字节
# m = hashlib.new('md5')
m = hashlib.md5() #c创建MD5对象
m.update(str_data) #传入需要加密的字符串进行MD5加密
b = m.hexdigest() #获取到需要的经过加密的MD5字符串
list.append(b)
c = len(list)
for i in range(0,c):
if list[i] in list[i+1:]:
print(Aname[i])
f.close()
print("程序终止")
3.计算音频的时间长度
import wave
import contextlib
fname = '/tmp/test.wav'
with contextlib.closing(wave.open(fname,'r')) as f:
frames = f.getnframes()
rate = f.getframerate()
duration = frames / float(rate)
print(duration)