– 读写WAV文件 – 多媒体服务(Python教程)(参考资料)
wave– 读取和写入WAV文件
源代码: Lib / wave.py
wave模块为WAV声音格式提供了方便的界面。它不支持压缩/解压缩,但它支持单声道/立体声.
wave模块定义了以下功能和异常:
wave.open(file, mode=None)-
如果file是一个字符串,请用该名称打开文件,否则将其视为类似文件的对象。mode可以是:
"rb"- 只读模式.
"wb"- 只写模式.
注意它不允许读/写WAV文件.
mode
"rb"返回Wave_read对象,而mode"wb"返回Wave_write宾语。如果省略mode并传递类似于文件的对象,则file,file.mode用作mode.的默认值如果传入类文件对象,则wave对象不会调用
close()方法时关闭它;调用者负责关闭文件对象.open()函数可用于with语句。当with阻塞完成时,Wave_read.close()或Wave_write.close()方法被调用.更改版本3.4:添加对不可搜索文件的支持.
wave.openfp(file, mode)-
同义词
open(),保持向后兼容性.从版本3.7开始不推荐使用,将在版本3.9.中删除
- exception
wave.Error -
当某些东西不可能因为它违反了WAV规范或遇到实施不足而引发的错误.
Wave_read对象
wave_read对象,由open(),有以下方法:
Wave_read.close()-
如果被
wave,并使实例不可用。这是在对象集合上自动调用的.
Wave_read.getnchannels()-
返回音频通道数(
1单声道,2用于立体声).
Wave_read.getsampwidth()-
以字节为单位返回样本宽度.
Wave_read.getframerate()-
回收采样频率.
Wave_read.getcomptype()-
Returns压缩类型(
"NONE"是唯一支持的类型。)
Wave_read.getcompname()-
getcomptype()的人类可读版本。通常"not compressed"并行"NONE".
Wave_read.getparams()-
返回
namedtuple()(nchannels, sampwidth,framerate, nframes, comptype, compname),相当于get*()方法的输出。
Wave_read.readframes(n)-
最多读取和返回n音频帧,如
bytes对象.
Wave_read.rewind()-
将文件指针倒回到音频流的开头.
为了与aifc模块,什么都不做有趣
Wave_read.getmarkers()-
返回
None.
Wave_read.getmark(id)-
提出错误
以下两种方法定义了一个术语“位置”,它与之相容,并且依赖于实现.
Wave_read.setpos(pos)-
将文件指针设置到指定位置。
Wave_read.tell()-
返回当前文件指针位置
Wave_write对象
对于可查找的输出流,wave标题将自动更新以反映实际写入的帧数。对于不可搜索的流,nframes值必须在写入第一帧数据时准确。不准确nframes可以通过调用setnframes()或setparams()来调用close()之前写入的帧数,然后使用writeframesraw()来编写帧数据,或致电writeframes()包含要写入的所有帧数据。在后一种情况下writeframes()将计算数据中的帧数并在写入帧数据之前相应地设置nframes.
由open()返回的Wave_write对象具有以下方法:
在版本3.4中更改:添加对不可搜索文件的支持.
Wave_write.close()-
确保 nframes是正确的,如果文件被
wave打开,则关闭文件。在对象集合时调用此方法。如果输出流不可寻找并且nframes与实际写入的帧数不匹配.
Wave_write.setnchannels(n)-
设置通道数量
Wave_write.setsampwidth(n)-
将样本宽度设置为nbytes.
Wave_write.setframerate(n)-
将帧速率设置为n.
更改版本3.2:此方法的非整数输入四舍五入到最近的整数
Wave_write.setnframes// (n)-
设置帧数至 n。如果实际写入的帧数不同(如果输出流不可搜索,则此更新尝试将引发错误)将在以后更改.
Wave_write.setcomptype(type, name)-
设置压缩类型和描述。目前,只有压缩类型
NONE支持,意味着没有压缩.
Wave_write.setparams(tuple)-
tuple应该
(nchannels, sampwidth, framerate, nframes, comptype,compname),值为set*()方法。设置allparameters.
Wave_write.tell()-
返回文件中的当前位置,与
Wave_read.tell()和Wave_read.setpos()方法具有相同的免责声明.
Wave_write.writeframesraw(data)-
写入音频帧,无需更正nframes.
更改版本3.4:任何字节对象现已被接受.
Wave_write.writeframes(data)-
写音频帧并确保nframes是正确的。如果输出流不可寻找并且在data已写入与nframes.
的以前设置值不匹配在版本3.4中更改:任何字节对象现在已被接受.
注意在调用writeframes()或writeframesraw()后设置任何参数无效,任何尝试这样做都会引起wave.Error.