sunau
— 读取和写入 Sun AU 文件¶
源代码: Lib/sunau.py
sunau
模块提供了一个方便的接口,用于处理 Sun AU 声音格式。请注意,此模块与 aifc
和 wave
模块的接口兼容。
音频文件由一个头文件和数据组成。头文件包含以下字段
字段 |
内容 |
---|---|
魔术字 |
四个字节 |
头文件大小 |
头文件的大小,包括信息,以字节为单位。 |
数据大小 |
数据的物理大小,以字节为单位。 |
编码 |
指示音频样本的编码方式。 |
采样率 |
采样率。 |
声道数 |
样本中的声道数。 |
信息 |
提供音频文件描述的 ASCII 字符串(用空字节填充)。 |
除了信息字段外,所有头文件字段的大小均为 4 个字节。它们都是以大端字节顺序编码的 32 位无符号整数。
sunau
模块定义了以下函数
- sunau.open(file, mode)¶
如果文件是一个字符串,则按该名称打开文件,否则将其视为可寻址的文件类对象。模式可以是以下任何一种
'r'
只读模式。
'w'
只写模式。
请注意,它不允许读/写文件。
模式为
'r'
返回一个AU_read
对象,而模式为'w'
或'wb'
返回一个AU_write
对象。
sunau
模块定义了以下异常
- exception sunau.Error¶
由于 Sun AU 规范或实现缺陷而导致某些操作不可能时引发的错误。
sunau
模块定义了以下数据项
- sunau.AUDIO_FILE_MAGIC¶
每个有效的 Sun AU 文件都以一个整数开头,该整数以大端形式存储。这是将字符串
.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 头文件中编码字段的其他已知值,但此模块不支持这些值。
AU_read 对象¶
AU_read 对象(如上文 open()
所返回)具有以下方法
- 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)¶
引发错误。
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)¶
元组应为
(nchannels, sampwidth, framerate, nframes, comptype, compname)
,其中值对set*()
方法有效。设置所有参数。
- AU_write.tell()¶
返回文件中的当前位置,对于
AU_read.tell()
和AU_read.setpos()
方法,免责声明相同。
- AU_write.close()¶
确保nframes正确,并关闭文件。
此方法在删除时调用。
请注意,在调用 writeframes()
或 writeframesraw()
后设置任何参数都是无效的。