wave
wave — Read and write WAV files
源代码:
Lib / wave.py
该wave
模块为WAV声音格式提供了一个方便的界面。它不支持压缩/解压缩,但它支持单声道/立体声。
该wave
模块定义了以下功能和异常:
wave.open(file[, mode])
如果file
是一个字符串,则按该名称打开该文件,否则将其视为可搜索的文件类对象。模式
可以是任何
'r', 'rb'
只读模式。'w', 'wb'
只写模式。
请注意,它不允许读/写WAV文件。
甲模式
的'r'
或'rb'
返回一个Wave_read
对象,而一个模式
的'w'
或'wb'
返回一个Wave_write
对象。如果省略模式
并将文件
类对象作为文件
传递,file.mode
则将其用作模式
的默认值('b'
如果需要,还会添加该标志)。
如果你传入一个类似文件的对象,当它的close()
方法被调用时,wave对象不会关闭它; 关闭文件对象是调用者的责任。
wave.openfp(file, mode)
open()
保持向后兼容性的同义词。
exception wave.Error
当某件事情不可能发生时会引发错误,因为它违反了WAV规范或触及实施缺陷。
1. Wave_read对象
返回的Wave_read对象open()
具有以下方法:
Wave_read.close()
如果流被打开wave
,请关闭流,并使实例无法使用。这是在对象收集时自动调用的。
Wave_read.getnchannels()
返回音频通道数(1
单声道,2
立体声)。
Wave_read.getsampwidth()
以字节为单位返回采样宽度
Wave_read.getframerate()
返回采样频率。
Wave_read.getnframes()
返回音频帧的数量。
Wave_read.getcomptype()
返回压缩类型('NONE'
是唯一受支持的类型)。
Wave_read.getcompname()
人类可读的版本getcomptype()
。通常'not compressed'
平行'NONE'
。
Wave_read.getparams()
返回一个元组(nchannels, sampwidth, framerate, nframes, comptype, compname)
,等价于get*()
方法的输出。
Wave_read.readframes(n)
最多可读取n
帧音频,并以一串字节的形式进行读取和返回。
Wave_read.rewind()
将文件指针倒回到音频流的开头。
为了与aifc
模块兼容定义以下两种方法,并且不要做任何有趣的事情。
Wave_read.getmarkers()
返回None
。
Wave_read.getmark(id)
引发错误。
以下两种方法定义了它们之间兼容的术语“位置”,并且在其他方面与实施相关。
Wave_read.setpos(pos)
将文件指针设置为指定的位置。
Wave_read.tell()
返回当前文件指针位置。
2. Wave_write对象
返回的Wave_write对象open()
具有以下方法:
Wave_write.close()
确保nframes
是正确的,并关闭文件,如果它被打开wave
。这个方法在对象收集时被调用。
Wave_write.setnchannels(n)
设置通道数量。
Wave_write.setsampwidth(n)
将示例宽度设置为n
个字节。
Wave_write.setframerate(n)
将帧速率设置为n
。
Wave_write.setnframes(n)
将帧数设置为n
。如果写入更多的帧,这将稍后更改。
Wave_write.setcomptype(type, name)
设置压缩类型和说明。目前,只NONE
支持压缩类型,意味着不压缩。
Wave_write.setparams(tuple)
的元组
应该是(nchannels, sampwidth, framerate, nframes, comptype, compname)
,凭有效的值set*()
的方法。设置所有参数。
Wave_write.tell()
返回文件中的当前位置,对于Wave_read.tell()
和Wave_read.setpos()
方法使用相同的免责声明。
Wave_write.writeframesraw(data)
编写音频帧,而不更正nframes
。
Wave_write.writeframes(data)
写音频帧并确保nframes
是正确的。
请注意,在调用writeframes()
或之后设置任何参数都是无效的writeframesraw()
,并且任何尝试都会引发wave.Error
。