22.3. sunau - 读写Sun AU文件

源代码: Lib / sunau.py

sunau模块为Sun AU声音格式提供了方便的界面。请注意,此模块与模块aifcwave接口兼容。

音频文件由标题后跟数据组成。标题的字段是:

领域内容
魔术词四个字节.snd
标题大小头的大小,包括info,以字节为单位。
数据大小数据的物理大小(以字节为单位)。
编码指示音频样本的编码方式。
采样率采样率。
频道数量样本中的通道数。
信息给出音频文件描述的ASCII字符串(用空字节填充)。

除了info字段,所有头字段的大小为4字节。它们都是以大端字节顺序编码的32位无符号整数。

sunau模块定义以下功能:

sunau.open(file, mode)

如果文件是字符串,请按该名称打开该文件,否则将其视为可搜索的类文件对象。模式可以是任何一种

'r'
只读模式。
'w'
只写模式。

请注意,它不允许读/写文件。

A mode of 'r' returns an AU_read object, while a mode of 'w' or 'wb' returns an AU_write object.

sunau.openfp(file, mode)

为维持向后兼容性的open()的同义词。

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.setpos(pos)

将文件指针设置为指定位置。tell()返回的值应该用于pos

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()之后设置任何参数无效。