– 读写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
.