22.3. sunau
—读写Sun AU文件¶
源代码: Lib/sunau.py
sunau
模块为Sun AU声音格式提供了方便的界面。注意,该模块与模块 aifc
和 wave
接口兼容。
音频文件由标题后跟数据组成。标题的字段是:
领域 |
内容 |
---|---|
魔术词 |
四字节 |
标题大小 |
标题的大小,包括info,以字节为单位。 |
数据大小 |
数据的物理大小(以字节为单位)。 |
编码 |
指示音频样本如何编码。 |
采样率 |
采样率。 |
频道数量 |
样本中的通道数。 |
信息 |
给出音频文件描述的ASCII字符串(用空字节填充)。 |
除了info字段,所有头字段的大小为4字节。它们都是以大端字节顺序编码的32位无符号整数。
sunau
模块定义以下功能:
-
sunau.
open
(file, mode)¶ 如果 file 是字符串,请使用该名称打开该文件,否则将其视为可搜索的类文件对象。 mode 可以是任何
'r'
只读模式。
'w'
只写模式。
请注意,它不允许读/写文件。
'r'
的 mode 返回AU_read
对象,而'w'
或'wb'
的 mode 返回AU_write
对象。
sunau
模块定义了以下异常:
-
exception
sunau.
Error
¶ 当由于Sun AU规范或实现缺陷导致某些不可能的错误。
sunau
模块定义以下数据项:
-
sunau.
AUDIO_FILE_MAGIC
¶ 每个有效的Sun AU文件的整数开头,以big-endian形式存储。这是字符串
.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头中的编码字段的值。
-
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标头的编码字段的其他已知值,但不受此模块支持。
22.3.1. AU_read对象¶
由 open()
上面返回的AU_read对象有以下方法:
-
AU_read.
close
()¶ 关闭流,并使实例不可用。 (删除时自动调用。)
-
AU_read.
getnchannels
()¶ 返回音频通道数(1表示金钱,2表示立体声)。
-
AU_read.
getsampwidth
()¶ 返回以字节为单位的样本宽度。
-
AU_read.
getframerate
()¶ 返回采样频率。
-
AU_read.
getnframes
()¶ 返回音频帧数。
-
AU_read.
getcomptype
()¶ 返回压缩类型。支持的压缩类型有
'ULAW'
,'ALAW'
和'NONE'
。
-
AU_read.
getcompname
()¶ getcomptype()
的人类可读版本。支持的类型具有相应的名称'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.
rewind
()¶ 将文件指针回滚到音频流的开头。
以下两种方法定义术语“位置”,它们之间是兼容的,否则是实现相关的。
-
AU_read.
tell
()¶ 返回当前文件指针位置。请注意,返回的值与文件中的实际位置无关。
以下两个函数被定义为与 aifc
兼容,并且不做任何有趣的事情。
-
AU_read.
getmarkers
()¶ 返回
None
。
-
AU_read.
getmark
(id)¶ 引发错误。
22.3.2. AU_write对象¶
由 open()
上面返回的AU_write对象有以下方法:
-
AU_write.
setnchannels
(n)¶ 设置通道数。
-
AU_write.
setsampwidth
(n)¶ 设置样本宽度(以字节为单位)。
在 3.4 版更改: 增加了对24位样本的支持。
-
AU_write.
setframerate
(n)¶ 设置帧速率。
-
AU_write.
setnframes
(n)¶ 设置帧数。这可以稍后更改,当和如果写入更多的帧。
-
AU_write.
setcomptype
(type, name)¶ 设置压缩类型和描述。在输出上仅支持
'NONE'
和'ULAW'
。
-
AU_write.
setparams
(tuple)¶ tuple 应为
(nchannels, sampwidth, framerate, nframes, comptype, compname)
,其值对于set*()
方法有效。设置所有参数。
-
AU_write.
tell
()¶ 返回文件中的当前位置,对
AU_read.tell()
和AU_read.setpos()
方法使用相同的免责声明。
-
AU_write.
writeframesraw
(data)¶ 写入音频帧,而不修正 nframes。
在 3.4 版更改: 任何 bytes-like object 现已被接受。
-
AU_write.
writeframes
(data)¶ 写入音频帧并确保 nframes 正确。
在 3.4 版更改: 任何 bytes-like object 现已被接受。
-
AU_write.
close
()¶ 确保 nframes 正确,并关闭文件。
删除时调用此方法。
请注意,在调用 writeframes()
或 writeframesraw()
后设置任何参数无效。