在Python中readframes返回2字节
在Python中使用readframes()
时,在线文档提到返回的是采样频率,但看起来它返回的是2个字节。我觉得每个帧应该有4个字节:
left = 2 bytes
right = 2 bytes
我是不是需要检查音频是单声道还是立体声?如果是立体声的话,就一次读取2个帧,如果是单声道,就一次读取1个帧?
1 个回答
5
一个波形文件包含以下内容:
- 每秒的采样率是通过
Wave_read.getframerate()
获取的(比如,如果是音频CD,通常是44100)。 - 采样宽度是通过
Wave_read.getsampwidth()
获取的字节数(也就是说,8位采样是1字节,16位采样是2字节)。 - 通道数可以通过
Wave_read.getnchannels()
获取(通常单声道是1,立体声是2)。
每次你使用Wave_read.getframes(N)
读取数据时,你会得到N * sample_width * n_channels
字节。
所以,如果你从一个44100Hz、16位的立体声文件中读取2048帧数据,你会得到8192字节的结果。