22.3. sunau
- 读写Sun AU文件¶
源代码: Lib / sunau.py
sunau
模块为Sun AU声音格式提供了方便的界面。请注意,此模块与模块aifc
和wave
接口兼容。
音频文件由标题后跟数据组成。标题的字段是:
领域 | 内容 |
---|---|
魔术词 | 四个字节.snd 。 |
标题大小 | 头的大小,包括info,以字节为单位。 |
数据大小 | 数据的物理大小(以字节为单位)。 |
编码 | 指示音频样本的编码方式。 |
采样率 | 采样率。 |
频道数量 | 样本中的通道数。 |
信息 | 给出音频文件描述的ASCII字符串(用空字节填充)。 |
除了info字段,所有头字段的大小为4字节。它们都是以大端字节顺序编码的32位无符号整数。
sunau
模块定义以下功能:
-
sunau.
open
(file, mode)¶ 如果文件是字符串,请按该名称打开该文件,否则将其视为可搜索的类文件对象。模式可以是任何一种
'r'
- 只读模式。
'w'
- 只写模式。
请注意,它不允许读/写文件。
A mode of
'r'
returns anAU_read
object, while a mode of'w'
or'wb'
returns anAU_write
object.
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 Objects¶
由上述open()
返回的AU_read对象具有以下方法:
-
AU_read.
close
()¶ 关闭流,并使实例不可用。(删除时自动调用。)
-
AU_read.
getnchannels
()¶ 返回音频通道数(1表示mone,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'
and'not compressed'
。
-
AU_read.
getparams
()¶ 传回
namedtuple()
(nchannels, sampwidth, framerate, nframes, t7> comptype, compname)
,相当于get*()
-
AU_read.
readframes
(n)¶ 读取并返回最多n个音频帧,以字节为单位。数据将以线性格式返回。如果原始数据为u-LAW格式,则将进行转换。
-
AU_read.
rewind
()¶ 将文件指针回滚到音频流的开头。
以下两种方法定义术语“位置”,它们之间是兼容的,否则是实现相关的。
-
AU_read.
tell
()¶ 返回当前文件指针位置。请注意,返回的值与文件中的实际位置无关。
为了与aifc
兼容,定义了以下两个函数,不要做任何有趣的事情。
-
AU_read.
getmarkers
()¶ 返回
None
。
-
AU_read.
getmark
(id)¶ 引发错误。
22.3.2. AU_write Objects¶
由上述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)¶ 元组应为
(nchannels, sampwidth, framerate, nframes, t5 > 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()
之后设置任何参数无效。