aifc读写AIFFAIFC文件

源代码: Lib / aifc.py


此模块支持读取和写入AIFFAIFF-C文件.AIFF是音频交换文件格式,一种用于在文件中存储数字音频样本的格式。AIFF-C是该格式的较新版本,包括能够压缩音频数据.

音频文件具有许多描述音频数据的参数。采样率或帧率是声音采样的每秒的次数。通道数表示音频是单声道,立体声还是单声道。每个帧由每个通道一个样本组成。样本大小是每个样本的大小(以字节为单位)。因此框架由nchannels * samplesize字节,第二个音频包含nchannels * samplesize * frameratebytes.

例如,CD质量音频的样本大小为两个字节(16位),使用双通道(立体声),帧速率为44,100帧/秒。这给出了4个字节(2 * 2)的帧大小,第二个值为2 * 2 * 44100个字节(176,400个字节).

模块aifc定义了以下函数:

aifc.openfile, mode=None

打开AIFF或AIFF-C文件并返回一个对象实例,其方法如下所述。参数file是一个命名文件的字符串或文件对象. mode必须是"r""rb"当文件必须打开阅读,或者"w""wb"当文件必须打开写入时。如果省略,则使用file.mode如果存在,否则"rb"是用过的。当用于写入时,文件对象应该是可查找的,除非你提前知道要写入多少样本并使用writeframesraw()setnframes()open()功能可以在with声明中使用。当with块完成时,close()方法被调用.

在版本3.4:支持with声明被添加了

返回的对象open()当打开文件进行读取时,请使用以下方法:

aifc.getnchannels

返回音频通道的数量(1为单声道,2为立体声).

aifc.getsampwidth

返回单个样本的字节大小.

aifc.getframerate()

返回采样率(每秒音频帧数).

aifc.getnframes

返回文件中的音频帧数.

aifc.getcomptype

返回一个长度为4的字节数组,描述音频文件中使用的压缩类型。对于AIFF文件,返回值为b"NONE".

aifc.getcompname

返回一个字节数组,可转换为音频文件中使用的压缩类型的可读描述。对于AIFF文件,返回值为b"not compressed".

aifc.getparams

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

aifc.getmarkers// ()

返回音频文件中的标记列表。标记由三个元素组成。第一个是标记ID(一个整数),第二个是从数据开头的帧中的标记位置(整数),第三个是标记的名称(一个字符串).

aifc.getmarkid

按照getmarkers()对于给定的标记id.

aifc.readframesnframes

阅读并返回下一个nframes音频文件中的帧。返回的数据是一个字符串,包含每个帧的allconnels的未压缩样本.

aifc.rewind

倒回读指针。下一个 readframes()将从头开始.

aifc.setpos (pos)

查看指定的帧数.

aifc.tell (

返回当前帧号.

aifc.close ( )

关闭AIFF文件。调用此方法后,该对象无法再被使用.

当打开文件进行写入时open()返回的对象具有上述所有方法,除了readframes()setpos()。此外,存在以下方法。get*()方法只能在调用相应的set*()方法后调用。在第一个writeframes()writeframesraw()之前,必须填写除帧数之外的所有参数.

aifc.aiff ()

创建一个AIFF文件。默认情况下是创建AIFF-C文件,除非文件名以".aiff"结尾,在这种情况下默认为AIFF文件.

aifc.aifc ()

创建AIFF-C文件。默认情况下是创建一个AIFF-C文件,取消该文件的名称以".aiff"结尾,在这种情况下默认为AIFF文件.

aifc.setnchannels (nchannels )

指定音频文件中的通道数.

aifc.setsampwidth (width

指定音频样本的字节大小.

aifc.setframeraterate

以每秒帧数指定采样频率.

aifc.setnframes (nframes

指定帧的数量被写入音频文件。如果没有设置此参数,或者设置不正确,文件需要支持搜索

aifc.setcomptype// (type, name)

指定压缩类型。如果未指定,则不会压缩音频数据。在AIFF文件中,压缩是不可能的.name参数应该是压缩类型的可读描述为bytes数组,type参数应为abytes长度为4的数组。目前支持以下压缩类型:b"NONE", b"ULAW", b"ALAW", b"G722".

aifc.setparamsnchannels, sampwidth, framerate, comptype, compname

一次设置所有上述参数。参数是由各种参数组成的元组。这意味着可以使用getparams()调用的结果作为setparams().

aifc.setmarkid, pos, name

的参数添加带有给定id的标记(大于0),以及给定位置的给定名称。可以在close().

aifc.tell)之前的任何时候调用此方法

返回输出文件中的当前写入位置。与setmark().

aifc.writeframesdata)组合使用

将数据写入输出文件。只有在设置了audiofile参数后才能调用此方法.

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

aifc.writeframesraw (data

喜欢writeframes(),除了音频文件的标题没有更新.

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

aifc.close ( )

关闭AIFF文件。更新文件的标题以反映音频数据的实际大小。调用此方法后,该对象无法再使用.

评论被关闭。