首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

aifc

源代码: Lib / aifc.py

该模块提供对读写AIFF和AIFF-C文件的支持。AIFF是音频交换文件格式,一种用于将数字音频样本存储在文件中的格式。AIFF-C是格式的更新版本,包括压缩音频数据的能力。

注意

某些操作只能在IRIX下运行; ImportError尝试导入cl仅在IRIX上可用的模块时会引发这些问题。

音频文件有许多描述音频数据的参数。采样率或帧率是声音每秒采样的次数。通道数表明音频是单声道,立体声还是四路。每个帧每个通道包含一个采样。样本大小是每个样本的大小(以字节为单位)。因此,一个帧由nchannels * 的采样大小字节,和音频的第二的价值包括nchannels * 的采样大小 * 帧率字节。

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

模块aifc定义了以下功能:

aifc.open(file[, mode])

打开AIFF或AIFF-C文件并使用下面描述的方法返回对象实例。参数文件是命名文件或文件对象的字符串。模式必须是'r'或者'rb'当文件必须打开以供阅读时,'w'或者'wb'当文件必须打开以供写入时。如果省略,file.mode则在使用时使用,否则'rb'使用。当用于书写,文件对象应该是可寻址的,除非你事先知道你要多少个样品中总编写和使用writeframesraw()setnframes()

open()打开文件读取时返回的对象具有以下方法:

aifc.getnchannels()

返回音频通道的数量(1个用于单声道,2个用于立体声)。

aifc.getsampwidth()

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

aifc.getframerate()

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

aifc.getnframes()

返回文件中的音频帧数。

aifc.getcomptype()

返回一个描述音频文件中使用的压缩类型的四字符字符串。对于AIFF文件,返回的值是'NONE'

aifc.getcompname()

返回音频文件中使用的压缩类型的可读描述。对于AIFF文件,返回的值是'not compressed'

aifc.getparams()

以上述顺序返回包含上述所有值的元组。

aifc.getmarkers()

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

aifc.getmark(id)

getmarkers()按照给定id中的标记返回元组。

aifc.readframes(nframes)

从音频文件中读取并返回下一个nframes帧。返回的数据是一个字符串,包含每个帧的所有通道的未压缩样本。

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.setframerate(rate)

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

aifc.setnframes(nframes)

指定要写入音频文件的帧数。如果此参数未设置或未正确设置,则该文件需要支持查找。

aifc.setcomptype(type, name)

指定压缩类型。如果未指定,音频数据将不会被压缩。在AIFF文件中,压缩是不可能的。name参数应该是压缩类型的可读描述,类型参数应该是四个字符的字符串。目前支持以下压缩类型:NONE,ULAW,ALAW,G722。

aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)

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

aifc.setmark(id, pos, name)

用给定的id(大于0)添加一个标记,并在给定的位置添加给定的名字。这个方法可以在之前的任何时候调用close()

aifc.tell()

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

aifc.writeframes(data)

将数据写入输出文件。此方法只能在音频文件参数设置完成后调用。

aifc.writeframesraw(data)

就像writeframes(),除了音频文件的头部没有更新。

aifc.close()

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

扫码关注腾讯云开发者

领取腾讯云代金券