新聞中心
sunau —- 讀寫 Sun AU 文件
源代碼: Lib/sunau.py

從版本 3.11 開始標(biāo)記為過時(shí),將在版本 3.13 中移除。: sunau 模塊已被棄用(請(qǐng)參閱 PEP 594 了解詳情)。
sunau 模擬提供了一個(gè)處理 Sun AU 聲音格式的便利接口。請(qǐng)注意此模塊與 aifc 和 wave 是兼容接口的。
音頻文件由標(biāo)頭和數(shù)據(jù)組成。標(biāo)頭的字段為:
|
域 |
目錄 |
|---|---|
magic word | 四個(gè)字節(jié) |
header size | 標(biāo)頭的大小,包括信息,以字節(jié)為單位。 |
data size | 數(shù)據(jù)的物理大小,以字節(jié)為單位。 |
encoding | 指示音頻樣本的編碼方式。 |
sample rate | 采樣率 |
# of channels | 采樣中的通道數(shù)。 |
info | 提供音頻文件描述的ASCII字符串(用空字節(jié)填充)。 |
除了 info 字段,所有標(biāo)頭字段的大小都是 4 字節(jié)。 它們都是采用大端字節(jié)序編碼的 32 位無(wú)符號(hào)整數(shù)。
sunau 模塊定義了以下函數(shù):
sunau.open(file, mode)
如果 file 是一個(gè)字符串,打開相應(yīng)名稱的文件,否則就把它作為可定位的文件類對(duì)象來處理。 mode 可以是
-
'r'只讀模式。
'w'只寫模式。
注意它不支持同時(shí)讀/寫文件。
mode 為 'r' 時(shí)返回一個(gè) AU_read 對(duì)象,而 mode 為 'w' 或 'wb' 時(shí)返回一個(gè) AU_write 對(duì)象。
sunau 模塊定義了以下異常:
exception sunau.Error
當(dāng) Sun AU 規(guī)范或?qū)崿F(xiàn)的低效導(dǎo)致無(wú)法操作時(shí)引發(fā)的錯(cuò)誤。
sunau 模塊定義了以下數(shù)據(jù)條目:
sunau.AUDIO_FILE_MAGIC
位于每個(gè)有效的 Sun AU 文件開頭的整數(shù),以大端序形式存儲(chǔ)。 這是一個(gè)被當(dāng)作整數(shù)來解讀的字符串 .snd。
sunau.AUDIO_FILE_ENCODING_MULAW_8
sunau.AUDIO_FILE_ENCODING_LINEAR_8
sunau.AUDIO_FILE_ENCODING_LINEAR_16
sunau.AUDIO_FILE_ENCODING_LINEAR_24
sunau.AUDIO_FILE_ENCODING_LINEAR_32
sunau.AUDIO_FILE_ENCODING_ALAW_8
AU 標(biāo)頭中被此模塊所支持的 encoding 字段值。
sunau.AUDIO_FILE_ENCODING_FLOAT
sunau.AUDIO_FILE_ENCODING_DOUBLE
sunau.AUDIO_FILE_ENCODING_ADPCM_G721
sunau.AUDIO_FILE_ENCODING_ADPCM_G722
sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3
sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5
AU 標(biāo)頭中附加的已知但不被此模塊所支持的 encoding 字段值。
AU_read 對(duì)象
由上面的 open() 所返回的 AU_read 對(duì)象具有以下幾種方法:
AU_read.close()
關(guān)閉流,并使實(shí)例不可用。 (此方法會(huì)在刪除對(duì)象時(shí)自動(dòng)調(diào)用。)
AU_read.getnchannels()
返回音頻的通道數(shù)(單聲道為 1,立體聲為 2)。
AU_read.getsampwidth()
返回采樣字節(jié)長(zhǎng)度。
AU_read.getframerate()
返回采樣頻率。
AU_read.getnframes()
返回音頻總幀數(shù)。
AU_read.getcomptype()
返回壓縮類型。 受支持的壓縮類型有 'ULAW', 'ALAW' 和 'NONE'。
AU_read.getcompname()
getcomptype() 的人類可讀的版本。 受支持的類型將為相應(yīng)的名稱 'CCITT G.711 u-law', 'CCITT G.711 A-law' 和 'not compressed'。
AU_read.getparams()
返回一個(gè) namedtuple() (nchannels, sampwidth, framerate, nframes, comptype, compname),與 get*() 方法的輸出相同。
AU_read.readframes(n)
讀取至多 n 幀音頻并作為 bytes 對(duì)象返回。 數(shù)據(jù)將以線性格式返回。 如果原始數(shù)據(jù)為 u-LAW 格式,則它將被轉(zhuǎn)換。
AU_read.rewind()
重置文件指針至音頻開頭.
以下兩個(gè)方法都使用指針,具體實(shí)現(xiàn)由其底層決定。
AU_read.setpos(pos)
設(shè)置文件指針到特定位置。 只有從 tell() 返回的值才可被用作 pos。
AU_read.tell()
返回當(dāng)前文件指針的位置。 請(qǐng)注意該返回值與文件中的實(shí)例位置無(wú)關(guān)。
以下兩個(gè)函數(shù)是為了與 aifc 保持兼容而定義的,實(shí)際不做任何事情。
AU_read.getmarkers()
返回 None。
AU_read.getmark(id)
引發(fā)錯(cuò)誤異常。
AU_write 對(duì)象
由上面的 open() 所返回的 AU_write 對(duì)象具有以下幾種方法:
AU_write.setnchannels(n)
設(shè)置聲道數(shù)。
AU_write.setsampwidth(n)
設(shè)置采樣寬度(字節(jié)長(zhǎng)度。)
在 3.4 版更改: 增加了對(duì) 24 位采樣的支持。
AU_write.setframerate(n)
設(shè)置幀速率。
AU_write.setnframes(n)
設(shè)置總幀數(shù)。 如果寫入了更多的幀,此值將會(huì)被更改。
AU_write.setcomptype(type, name)
設(shè)置壓縮類型和描述。 對(duì)于輸出只支持 'NONE' 和 'ULAW'。
AU_write.setparams(tuple)
tuple 應(yīng)該是 (nchannels, sampwidth, framerate, nframes, comptype, compname),每項(xiàng)的值可用于 set*() 方法。 設(shè)置所有形參。
AU_write.tell()
返回文件中的當(dāng)前位置,其含義與 AU_read.tell() 和 AU_read.setpos() 方法的一致。
AU_write.writeframesraw(data)
寫入音頻數(shù)據(jù)但不更新 nframes。
在 3.4 版更改: 現(xiàn)在可接受任意 bytes-like object。
AU_write.writeframes(data)
寫入音頻數(shù)據(jù)并更新 nframes。
在 3.4 版更改: 現(xiàn)在可接受任意 bytes-like object。
AU_write.close()
確保 nframes 正確,并關(guān)閉文件。
此方法會(huì)在刪除時(shí)被調(diào)用。
請(qǐng)注意在調(diào)用 writeframes() 和 writeframesraw() 之后再設(shè)置任何形參都是無(wú)效的。
網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:sunau—-讀寫SunAU文件
文章位置:http://www.dlmjj.cn/article/codihcj.html


咨詢
建站咨詢
