You are here:  Home » Python » – 读取和写入Sun AU文件 – 多媒体服务(Python教程)(参考资料)

sunau读取和写入Sun AU文件

源代码: Lib / sunau.py


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

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

字段 内容
魔术字 四个字节.snd.
标题大小 标题的大小,包括信息,以字节为单位.
数据大小 数据的物理大小,以字节为单位.
coding 表示如何音频样本编码.
采样率 采样率
渠道数量 样品中的通道数量
信息 ASCII字符串给出了对音频文件的描述(用空字节填充).

除info字段外,所有头字段的大小均为4个字节。它们都是以big-endian字节顺序编码的32位无符号整数.

sunau模块定义了以下函数:

sunau.openfile, mode

如果file是一个字符串,用该名称打开文件,否则将其视为一个类似文件的对象。mode可以是任何

"r"
只读模式.
"w"
只写模式.

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

一个 mode"r"返回AU_read对象,而mode"w"要么 "wb"返回AU_write宾语。

sunau.openfpfile, mode

的同义词open(),为了向后兼容而保持.

从版本3.7开始不推荐使用,将在版本3.9.中删除

sunaumodule定义了以下异常:

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模块支持的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""notcompressed".

AU_read.getparams

返回namedtuple() (nchannels, sampwidth,framerate, nframes, comptype, compname),相当于get*()方法的输出

AU_read.readframes// (n)

最多返回n音频帧,如bytes宾语。数据将以线性格式返回。如果原始数据是u-LAW格式,则会被转换.

AU_read.rewind ()

将文件指针重新转换为音频流的开头.

以下两种方法定义了一个术语“位置”,它与之相容,并且依赖于实现.

AU_read.setpos (pos )

将文件指针设置为指定的位置。只有tell()返回的值才能用于pos.

AU_read.tell

返回当前文件指针位置。请注意,返回的值与文件中的实际位置无关.

为了兼容aifc,什么也不做有趣的事.

AU_read.getmarkers ()

回复None.

AU_read.getmarkid

提出错误

AU_write对象

AU_write对象,如上面open()所返回的,有以下几种方法:

AU_write.setnchannelsn

设置通道数.

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:任何类似字节的对象现在已被接受.

AU_write.writeframes (data)

写入音频帧并确保nframes是正确的.

版本3.4更改:任何字节对象现已被接受.

AU_write.close

确保nframes是正确的,然后关闭文件.

这个方法在删除时调用.

注意调用writeframes()writeframesraw().