On this page
21.4. sunau —读写 Sun AU 文件
源代码: Lib/sunau.py
sunau模块为 Sun AU 声音格式提供了方便的界面。请注意,此模块与模块aifc和wave接口兼容。
音频文件由标题和数据组成。Headers 的字段为:
Field | Contents |
---|---|
magic word | 四个字节.snd 。 |
header size | Headers 的大小,包括信息,以字节为单位。 |
data size | 数据的物理大小,以字节为单位。 |
encoding | 指示音频 samples 的 encodings。 |
sample rate | 采样率。 |
Channels 数 | samples 中的通道数。 |
info | 提供音频文件描述的 ASCII 字符串(用空字节填充)。 |
除信息字段外,所有 Headers 字段均为 4 个字节。它们都是以 big-endian 字节 Sequences 编码的 32 位无符号整数。
sunau模块定义以下Function:
sunau.
open
(* file , mode *)- 如果* file *是字符串,请使用该名称打开文件,否则将其视为可搜索的类似于文件的对象。 模式可以是以下任何一种
'r'
只读模式。
'w'
- 只写模式。
请注意,它不允许读/写文件。
'r'
的* mode 返回AU_read
对象,而'w'
或'wb'
的 mode *返回AU_write
对象。
sunau.
openfp
(* file , mode *)- open()的同义词,为向后兼容而保留。
sunau模块定义以下异常:
- exception
sunau.
Error
- 当由于 Sun AU 规范或实施缺陷而无法解决某些问题时,将引发错误。
sunau模块定义以下数据项:
sunau.
AUDIO_FILE_MAGIC
- 每个有效的 Sun AU 文件都以整数开头,并以 big-endian 形式存储。这是字符串
.snd
解释为整数。
- 每个有效的 Sun AU 文件都以整数开头,并以 big-endian 形式存储。这是字符串
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
- AUHeaders 中编码字段的其他已知值,但此模块不支持。
21.4.1. AU_read 对象
如上面的open()返回的 AU_read 对象具有以下方法:
AU_read.
close
( )- 关闭流,并使实例不可用。 (这在删除时自动称为.)
AU_read.
getnchannels
( )- 返回音频通道数(单声道为 1,立体声为 2)。
AU_read.
getsampwidth
( )- 返回以字节为单位的 samples 宽度。
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'
。
- getcomptype()的可读版本。支持的类型分别具有名称
AU_read.
getparams
( )- 返回一个 Tuples
(nchannels, sampwidth, framerate, nframes, comptype, compname)
,等效于get*()
方法的输出。
- 返回一个 Tuples
AU_read.
readframes
(* n *)- 读取并返回最多* n *帧音频,作为一个字节字符串。数据将以线性格式返回。如果原始数据为 u-LAW 格式,将对其进行转换。
AU_read.
rewind
( )- 将文件指针倒退到音频流的开头。
以下两种方法定义了术语“位置”,它们在它们之间是兼容的,否则与实现有关。
AU_read.
setpos
(* pos *)- 将文件指针设置到指定位置。 * pos *仅应使用从tell()返回的值。
AU_read.
tell
( )- 返回当前文件指针位置。请注意,返回的值与文件中的实际位置无关。
定义以下两个函数是为了与aifc兼容,并且不会做任何有趣的事情。
AU_read.
getmarkers
( )- 返回
None
。
- 返回
AU_read.
getmark
(* id *)- 引发错误。
21.4.2. AU_write 对象
如上面的open()返回的 AU_write 对象具有以下方法:
AU_write.
setnchannels
(* n *)- 设置 Channels 数。
AU_write.
setsampwidth
(* n *)- 设置 samples 宽度(以字节为单位)。
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*()
方法有效。设置所有参数。
- tuple *应该是
-
AU_write.
tell
( )- 返回文件中的当前位置,并对AU_read.tell()和AU_read.setpos()方法使用相同的免责语句。
AU_write.
writeframesraw
(* data *)- 编写音频帧,而不校正* nframes *。
AU_write.
writeframes
(* data *)- 编写音频帧,并确保* nframes *正确。
AU_write.
close
( )- 确保* nframes *是正确的,然后关闭文件。
删除时调用此方法。
请注意,在调用writeframes()
或writeframesraw()
之后设置任何参数都是无效的。