1. 程式人生 > >音頻處理

音頻處理

close 位數 inpu ces mes dir tput 令行 jar

1.將不同音頻文件格式進行轉換的代碼
import subprocess[subprocess是python中新增的一個模塊,它允許你生成新的進程,連接到它們的input/output/error管道,並獲取它們的返回狀態碼]
infile = ‘E:\兼職\caoen\caoen_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("程序終止")

音頻處理