– 读取和写入Sun AU文件 – 多媒体服务(Python教程)(参考资料)
sunau– 读取和写入Sun AU文件
源代码: Lib / sunau.py
sunau模块为Sun AU声音格式提供了方便的界面。请注意,此模块与模块aifc和wave.
| 字段 | 内容 |
|---|---|
| 魔术字 | 四个字节.snd. |
| 标题大小 | 标题的大小,包括信息,以字节为单位. |
| 数据大小 | 数据的物理大小,以字节为单位. |
| coding | 表示如何音频样本编码. |
| 采样率 | 采样率 |
| 渠道数量 | 样品中的通道数量 |
| 信息 | ASCII字符串给出了对音频文件的描述(用空字节填充). |
除info字段外,所有头字段的大小均为4个字节。它们都是以big-endian字节顺序编码的32位无符号整数.
sunau模块定义了以下函数:
sunau.open(file, mode)-
如果file是一个字符串,用该名称打开文件,否则将其视为一个类似文件的对象。mode可以是任何
"r"- 只读模式.
"w"- 只写模式.
请注意,它不允许读/写文件.
sunaumodule定义了以下异常:
- exception
sunau.Error -
由于Sun AU规格或实现不足而无法实现的错误.
sunau模块定义了以下数据:
sunau.AUDIO_FILE_MAGIC-
每个有效Sun AU文件的整数开头,以big-endian格式存储。这是字符串
.snd被解释为整数
sunau.AUDIO_FILE_ENCODING_MULAW_8sunau.AUDIO_FILE_ENCODING_LINEAR_8sunau.AUDIO_FILE_ENCODING_LINEAR_16sunau.AUDIO_FILE_ENCODING_LINEAR_24sunau.AUDIO_FILE_ENCODING_LINEAR_32sunau.AUDIO_FILE_ENCODING_ALAW_8-
AU模块支持的AU头编码字段的值.
sunau.AUDIO_FILE_ENCODING_FLOATsunau.AUDIO_FILE_ENCODING_DOUBLEsunau.AUDIO_FILE_ENCODING_ADPCM_G721sunau.AUDIO_FILE_ENCODING_ADPCM_G722sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3sunau.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.getmark(id)-
提出错误
AU_write对象
AU_write对象,如上面open()所返回的,有以下几种方法:
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)-
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().