– 读写AIFF和AIFC文件 – 多媒体服务(Python教程)(参考资料)
aifc
– 读写AIFF和AIFC文件
源代码: Lib / aifc.py
此模块支持读取和写入AIFF和AIFF-C文件.AIFF是音频交换文件格式,一种用于在文件中存储数字音频样本的格式。AIFF-C是该格式的较新版本,包括能够压缩音频数据.
音频文件具有许多描述音频数据的参数。采样率或帧率是声音采样的每秒的次数。通道数表示音频是单声道,立体声还是单声道。每个帧由每个通道一个样本组成。样本大小是每个样本的大小(以字节为单位)。因此框架由nchannels * samplesize
字节,第二个音频包含nchannels * samplesize * framerate
bytes.
例如,CD质量音频的样本大小为两个字节(16位),使用双通道(立体声),帧速率为44,100帧/秒。这给出了4个字节(2 * 2)的帧大小,第二个值为2 * 2 * 44100个字节(176,400个字节).
模块aifc
定义了以下函数:
aifc.
open
(file, 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.
getmark
(id)-
按照
getmarkers()
对于给定的标记id.
aifc.
readframes
(nframes)-
阅读并返回下一个nframes音频文件中的帧。返回的数据是一个字符串,包含每个帧的allconnels的未压缩样本.
aifc.
rewind
()-
倒回读指针。下一个
readframes()
将从头开始.
aifc.
setpos
(pos)-
查看指定的帧数.
aifc.
tell
()-
返回当前帧号.
当打开文件进行写入时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参数应该是压缩类型的可读描述为bytes数组,type参数应为abytes长度为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)组合使用-
将数据写入输出文件。只有在设置了audiofile参数后才能调用此方法.
更改版本3.4:任何字节对象现在已被接受.
aifc.
writeframesraw
(data)-
喜欢
writeframes()
,除了音频文件的标题没有更新.更改在版本3.4:任何字节对象现在已被接受.
aifc.
close
( )-
关闭AIFF文件。更新文件的标题以反映音频数据的实际大小。调用此方法后,该对象无法再使用.
评论被关闭。