python3从零学习-5.11.3、 sunau - 读写 Sun AU 文件

78 篇文章 1 订阅
78 篇文章 0 订阅

源代码: Lib/sunau.py


sunau     模拟提供了一个处理 Sun AU 声音格式的便利接口。请注意此模块与 aifc 和 wave    是兼容接口的。

音频文件由标头和数据组成。标头的字段为:

目录

magic word

四个字节 .snd

header size

标头的大小,包括信息,以字节为单位。

data size

数据的物理大小,以字节为单位。

编码

指示音频样本的编码方式。

sample rate

采样率

# of channels

的通道数。

info

提供音频文件描述的ASCII字符串(用空字节填充)。

除了info字段之外,所有头字段的大小都是4字节。它们都是用大端字节顺序编码的32位无符号整数。

sunau模块定义了以下功能:

sunau.open(file, mode)

如果file是一个字符串,按该名称打开文件,否则将其视为一个可查找的类文件对象。

mode:

‘r':只读模式。

‘w':只写模式。

 

注意,它不允许读/写文件。

'r'模式返回一个AU_read对象,而'w'或'wb'模式返回一个AU_write对象。

sunau.openfp(file, mode)

同 open()  ,用于向后兼容。

 

sunau模块定义了以下异常:

exception sunau.Error

由于Sun AU规格或实现缺陷而导致某些事情不可能完成时出现的错误。

 

sunau模块定义了以下数据项:

sunau.AUDIO_FILE_MAGIC

sunau.AUDIO_FILE_ENCODING_MULAW_8

sunau.AUDIO_FILE_ENCODING_LINEAR_8

sunau.AUDIO_FILE_ENCODING_LINEAR_16

sunau.AUDIO_FILE_ENCODING_LINEAR_24

sunau.AUDIO_FILE_ENCODING_LINEAR_32

sunau.AUDIO_FILE_ENCODING_ALAW_8

sunau.AUDIO_FILE_ENCODING_FLOAT

sunau.AUDIO_FILE_ENCODING_DOUBLE

sunau.AUDIO_FILE_ENCODING_ADPCM_G721

sunau.AUDIO_FILE_ENCODING_ADPCM_G722

sunau.AUDIO_FILE_ENCODING_ADPCM_G723_3

sunau.AUDIO_FILE_ENCODING_ADPCM_G723_5

 

AU_read 对象

上面的open()返回的AU_read对象有以下方法:

AU_read.close()

关闭流,并使实例不可用。(在删除时自动调用。)

 

AU_read.getnchannels()

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

 

AU_read.getsampwidth()

返回采样字节长度。

 

AU_read.getframerate()

返回采样频率。

 

AU_read.getnframes()

返回音频总帧数。

 

AU_read.getcomptype()

返回压缩类型。支持的压缩类型是“ULAW”、“ALAW”和“NONE”。

 

AU_read.getcompname()

人类可读的getcomptype()版本。支持的类型分别名为“CCITT G.711 u-law”、“CCITT G.711 A-law”和“未压缩”。

 

AU_read.getparams()

返回一个 namedtuple()            (nchannels, sampwidth, framerate, nframes, comptype, compname),与 get*() 方法的输出相同。

 

AU_read.readframes(n)

读取和返回最多n帧的音频,作为一个字节对象。数据将以线性格式返回。如果原始数据是u-LAW格式,将进行转换。

 

AU_read.rewind()

重置文件指针至音频开头.

 

以下两个方法都使用指针,具体实现由其底层决定。

AU_read.setpos(pos)

将文件指针设置为指定位置。pos只能使用tell()返回的值。

 

AU_read.tell()

返回当前文件指针位置。注意,返回值与文件中的实际位置无关。

 

以下两个函数的定义是为了与aifc兼容,它们不做任何有趣的事情。

AU_read.getmarkers()

返回 None。

 

AU_read.getmark(id)

引发错误异常。

 

AU_write 对象

上面的open()返回的AU_write对象有以下方法:

AU_write.setnchannels(n)

设置声道数。

 

AU_write.setsampwidth(n)

Set the sample width (in bytes.)

 

AU_write.setframerate(n)

设置帧速率。

 

AU_write.setnframes(n)

设置帧的数量。当写入更多的帧时,这可以在以后修改。

 

AU_write.setcomptype(type, name)

设置压缩类型和描述。输出只支持'NONE'和'ULAW'。

 

AU_write.setparams(tuple)

元组应该是(nchannels, sampwidth, framerate, nframes, comptype, compname),值对于set*()方法有效。设置所有参数。

 

AU_write.tell()

返回文件中的当前位置,并对AU_read.tell()和AU_read.setpos()方法给出相同的声明。

 

AU_write.writeframesraw(data)

写入音频数据但不更新 nframes。

 

AU_write.writeframes(data)

写入音频数据并更新 nframes。

 

AU_write.close()

确保nframes是正确的,然后关闭文件。

在删除时调用此方法。

注意,在调用writeframes()或writeframesraw()之后设置任何参数都是无效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值