sunau
--- 讀寫 Sun AU 文件?
源代碼: Lib/sunau.py
Deprecated since version 3.11, will be removed in version 3.13: The sunau
module is deprecated
(see PEP 594 for details).
sunau
模擬提供了一個處理 Sun AU 聲音格式的便利接口。請注意此模塊與 aifc
和 wave
是兼容接口的。
音頻文件由標頭和數(shù)據(jù)組成。標頭的字段為:
域 |
目錄 |
---|---|
magic word |
四個字節(jié) |
header size |
標頭的大小,包括信息,以字節(jié)為單位。 |
data size |
數(shù)據(jù)的物理大小,以字節(jié)為單位。 |
encoding |
指示音頻樣本的編碼方式。 |
sample rate |
采樣率 |
# of channels |
采樣中的通道數(shù)。 |
info |
提供音頻文件描述的ASCII字符串(用空字節(jié)填充)。 |
除了 info 字段,所有標頭字段的大小都是 4 字節(jié)。 它們都是采用大端字節(jié)序編碼的 32 位無符號整數(shù)。
sunau
模塊定義了以下函數(shù):
- sunau.open(file, mode)?
如果 file 是一個字符串,打開相應(yīng)名稱的文件,否則就把它作為可定位的文件類對象來處理。 mode 可以是
'r'
只讀模式。
'w'
只寫模式。
注意它不支持同時讀/寫文件。
mode 為
'r'
時返回一個AU_read
對象,而 mode 為'w'
或'wb'
時返回一個AU_write
對象。
sunau
模塊定義了以下異常:
- exception sunau.Error?
當 Sun AU 規(guī)范或?qū)崿F(xiàn)的低效導致無法操作時引發(fā)的錯誤。
sunau
模塊定義了以下數(shù)據(jù)條目:
- sunau.AUDIO_FILE_MAGIC?
位于每個有效的 Sun AU 文件開頭的整數(shù),以大端序形式存儲。 這是一個被當作整數(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.?
- sunau.AUDIO_FILE_ENCODING_ALAW_8?
AU 標頭中被此模塊所支持的 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 標頭中附加的已知但不被此模塊所支持的 encoding 字段值。
AU_read 對象?
由上面的 open()
所返回的 AU_read 對象具有以下幾種方法:
- AU_read.close()?
關(guān)閉流,并使實例不可用。 (此方法會在刪除對象時自動調(diào)用。)
- AU_read.getnchannels()?
返回音頻的通道數(shù)(單聲道為 1,立體聲為 2)。
- AU_read.getsampwidth()?
返回采樣字節(jié)長度。
- 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()?
返回一個
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
,與get*()
方法的輸出相同。
- AU_read.readframes(n)?
讀取至多 n 幀音頻并作為
bytes
對象返回。 數(shù)據(jù)將以線性格式返回。 如果原始數(shù)據(jù)為 u-LAW 格式,則它將被轉(zhuǎn)換。
- AU_read.rewind()?
重置文件指針至音頻開頭.
以下兩個方法都使用指針,具體實現(xiàn)由其底層決定。
- AU_read.tell()?
返回當前文件指針的位置。 請注意該返回值與文件中的實例位置無關(guān)。
以下兩個函數(shù)是為了與 aifc
保持兼容而定義的,實際不做任何事情。
- AU_read.getmarkers()?
返回
None
。
- AU_read.getmark(id)?
引發(fā)錯誤異常。
AU_write 對象?
由上面的 open()
所返回的 AU_write 對象具有以下幾種方法:
- AU_write.setnchannels(n)?
設(shè)置聲道數(shù)。
- AU_write.setsampwidth(n)?
設(shè)置采樣寬度(字節(jié)長度。)
在 3.4 版更改: 增加了對 24 位采樣的支持。
- AU_write.setframerate(n)?
設(shè)置幀速率。
- AU_write.setnframes(n)?
設(shè)置總幀數(shù)。 如果寫入了更多的幀,此值將會被更改。
- AU_write.setcomptype(type, name)?
設(shè)置壓縮類型和描述。 對于輸出只支持
'NONE'
和'ULAW'
。
- AU_write.setparams(tuple)?
tuple 應(yīng)該是
(nchannels, sampwidth, framerate, nframes, comptype, compname)
,每項的值可用于set*()
方法。 設(shè)置所有形參。
- AU_write.tell()?
返回文件中的當前位置,其含義與
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)閉文件。
此方法會在刪除時被調(diào)用。
請注意在調(diào)用 writeframes()
和 writeframesraw()
之后再設(shè)置任何形參都是無效的。