aifc
aifc — Read and write AIFF and AIFC files
源代码:
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文件。该文件的标题被更新以反映音频数据的实际大小。调用此方法后,该对象不能再使用。