中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中使用sndhdr模塊識別音頻的格式

發布時間:2021-03-17 16:20:27 來源:億速云 閱讀:238 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在Python中使用sndhdr模塊識別音頻的格式,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

sndhdr模塊

功能描述:sndhdr模塊提供檢測音頻類型的接口。

唯一一個API

sndhdr模塊提供了sndhdr.what(filename)和sndhdr.whathdr(filename)兩個函數。但實際上它們的功能是一樣的。(不知道多寫一個的意義何在,what函數在內部調用了whathdr函數并把數據完完整整地返回)

在之前的版本,whathdr函數返回元組類型的數據,在Python3.5版本之后改為返回一個namedtuple。返回的元組包括5個屬性:filetype、framerate、nchannels、nframes和sampwidth。

1.filetype代表音頻格式。值為:'aifc', ‘aiff', ‘au', ‘hcom', ‘sndr', ‘sndt', ‘voc', ‘wav', ‘8svx', ‘sb', ‘ub', ‘ul'或者None中之一。常見的幾個格式反倒不支持。
2.framerate代表音頻文件的幀率。如果音頻文件難以解碼或者未知,該值會返回0。
3.nchannels代表通道數。如果音頻文件難以解碼或者未知,該值會返回0。
4.nframes代表幀數。如果無法確定則返回-1。
5.sampwidth代表返回樣本的長度(比特),值為8的倍數,或者返回A(A-LAW格式)、u(u-LAW格式)。

>>> import sndhdr
>>> sndhdr.what('test.mp3') # 無法檢測,返回None
>>> sndhdr.what('test.wav')
SndHeaders(filetype='wav', framerate=44100, nchannels=2, nframes=12630240, sampwidth=16)

注:模塊在檢測AIFC和AIFF時使用了aifc模塊。檢測wav時使用了wave模塊。這兩個都是Python標準庫里面的模塊

自定義檢測流程

和imghdr模塊一樣,sndhdr內部也使用了一個tests列表維護檢測函數。如果想要自行定義檢測流程,可以通過修改tests列表達到目的。

>>> import sndhdr
>>> sndhdr.tests
[<function test_aifc at 0x000001A99B527BF8>, <function test_au at 0x000001A99B527C80>, <
function test_hcom at 0x000001A99B527D08>, <function test_voc at 0x000001A99B527D90>, <f
unction test_wav at 0x000001A99B527E18>, <function test_8svx at 0x000001A99B527EA0>, <fu
nction test_sndt at 0x000001A99B527F28>, <function test_sndr at 0x000001A99B521048>]
>>> def final(h, f): # 自定義檢測函數
... print("Maybe mp3 or aac?")
...
>>> sndhdr.what("test.mp3")
>>> sndhdr.tests.append(final) # 添加自定義檢測函數到檢測列表中
>>> sndhdr.what("test.mp3")
Maybe mp3 or aac?

自行添加檢測函數需要接收兩個參數h和f,h是用來檢測的字節串,f是file對象。

命令行啟動sndhdr模塊

sndhdr用-m模式啟動的格式也跟imghdr一樣,終端中調用python -m sndhdr [-r] file1 file2...就可以了。file可以是文件或者文件夾,-r參數代表遞歸檢測。

Desktop\test>python -m sndhdr test.mp3 test.wav
test.mp3: None
test.wav: SndHeaders(filetype='wav', framerate=44100, nchannels=2, nframes=12630240, sampwidth=16)

關于怎么在Python中使用sndhdr模塊識別音頻的格式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东源县| 绍兴市| 万全县| 油尖旺区| 赤壁市| 盐边县| 洛阳市| 民县| 阜南县| 区。| 荣成市| 绥芬河市| 晋宁县| 宁海县| 思茅市| 南靖县| 萨嘎县| 顺昌县| 古田县| 茂名市| 皋兰县| 平顶山市| 和田市| 阿勒泰市| 怀仁县| 彰武县| 长泰县| 岳西县| 鹤岗市| 宝坻区| 聂拉木县| 巨野县| 牡丹江市| 清原| 夏河县| 方城县| 房产| 合江县| 印江| 佳木斯市| 阆中市|