aifc
源代码: Lib/aifc.py
此模块支持读取和写入AIFF和AIFF-C文件。AIFF是音频交换文件格式,用于在文件中存储数字音频样本的格式。AIFF-C是一种较新版本的格式,包括压缩音频数据的能力。
音频文件有许多描述音频数据的参数。采样率或帧速率是每秒对声音进行采样的次数。频道数表示音频是单声道、立体声还是四声道。每个帧由每个通道一个样本组成。样本大小是每个样本的字节大小。因此,框架由 nchannels * samplesize
字节,一秒钟的音频包括 nchannels * samplesize * framerate
字节。
例如,CD质量音频的采样大小为两个字节(16位),使用两个通道(立体声),帧速率为44100帧/秒。这使得帧大小为4字节(2 * 2),一秒钟的价值占2 * 2 * 44100字节(176400字节)。
模块 aifc
定义以下函数:
- aifc.open(file, mode=None)
打开一个aiff或aiff-c文件并返回一个对象实例,方法如下所述。参数 file 是命名文件的字符串或 file object . mode 必须是
'r'
或'rb'
当必须打开文件进行读取时,或'w'
或'wb'
当必须打开文件进行写入时。如果省略,file.mode
如果存在则使用,否则'rb'
使用。当用于写入时,文件对象应该是可查找的,除非您提前知道总共要写入多少样本并使用writeframesraw()
和setnframes()
. 这个open()
函数可用于with
语句。当with
块完成后,close()
方法被调用。在 3.4 版更改: 支持
with
语句已添加。
返回的对象 open()
打开文件进行读取时,有以下方法:
- aifc.getparams()
返回A
namedtuple()
(nchannels, sampwidth, framerate, nframes, comptype, compname)
,相当于get*()
方法。
- aifc.getmark(id)
返回tuple,如中所述
getmarkers()
对于给定的标记 id .
- aifc.rewind()
倒回读指针。下一个
readframes()
将从头开始。
返回的对象 open()
打开文件进行写入时,除了 readframes()
和 setpos()
.此外,还存在以下方法。这个 get*()
方法只能在相应的 set*()
方法已被调用。在第一个之前 writeframes()
或 writeframesraw()
,必须填写除帧数以外的所有参数。
- aifc.setcomptype(type, name)
指定压缩类型。如果未指定,则不会压缩音频数据。在AIFF文件中,无法进行压缩。name参数应该是对压缩类型的可读描述,作为字节数组,type参数应该是长度为4的字节数组。目前支持以下压缩类型:
b'NONE'
,b'ULAW'
,b'ALAW'
,b'G722'
.
- aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
同时设置上述所有参数。参数是由各种参数组成的元组。这意味着可以使用
getparams()
作为参数调用到setparams()
.
- aifc.setmark(id, pos, name)
在给定位置添加具有给定ID(大于0)和给定名称的标记。以前任何时候都可以调用此方法
close()
.
- aifc.tell()
返回输出文件中的当前写入位置。与…结合使用
setmark()
.
- aifc.writeframes(data)
将数据写入输出文件。只有在设置音频文件参数后才能调用此方法。
在 3.4 版更改: 任何 bytes-like object 现在被接受。
- aifc.writeframesraw(data)
类似于
writeframes()
,但不更新音频文件的头。在 3.4 版更改: 任何 bytes-like object 现在被接受。
- aifc.close()
关闭AIFF文件。文件头会更新以反映音频数据的实际大小。调用此方法后,无法再使用该对象。