8 位(每个样本位数)PCM WAV 文件可以包含多个通道吗?
Can 8-bit (bits per sample) PCM WAV files contain more than one channel?
我意识到忽视这个想法对我来说是不好的,因为我还没有从这个角度读过任何关于number of channels
和bits per sample
的东西。我的理由是我不确定 2 通道 8 位 PCM 文件的示例会是什么样子。
是1 sample = 1 channel
还是1 sample = 4 bits (left) + 4 bits (right)
上下文:我正在编写一个读取 WAV 文件的程序,我突然想到,如果我遇到 8 位 PCM WAV 文件,并且我的代码以这种方式读取(见下文),那么我的程序无法正确读取多通道 8 位 PCM WAV 文件。
// read actual audio data after obtaining
// the headers
// audioData is a vector of vectors (1 vector per channel)
uint32_t temp;
while( !feof(wavFile) ) {
for(uint16_t i = 0; i < numChannels; i++) {
temp = 0;
fread(&temp,sizeof(uint8_t),1,wavFile);
audioData.at(i).push_back(temp);
}
}
该结构通常描述 WAV 音频数据的格式,在 MSDN 中描述如下: 波形图结构:
- PCM音频的"采样"是一个数据块,包括所有通道
-
nBlockAlign
值是对应于样本的此类块的大小(以字节为单位) - 样本以特定的固定速率进行,由
nSamplesPerSec
值定义 - 每个样本块由
nChannels
值组成,每个值wBitsPerSample
也就是说,每个样本 8 位的两个通道文件每秒有 nSamplesPerSec
个音频数据对,每个对包括两个 8 位值,用于两者的每个通道。
(这是 WAV 文件中存在此结构的示例 - 尽管这是 24 位/样本的更复杂的情况,但您应该明白这一点)。
相关文章:
- C++ 在堆栈中包含多态属性的类对象存储
- 即使我没有包含多个文件,C++中的多个定义错误
- 实现包含多个 QQuickPaintedItems 的 QQuickView 的滚动
- C++文件包含多行
- 如何存储包含多个空格的字符串 c++
- 如果代码包含多个复杂度循环,如何计算复杂度
- 将包含多个元素的字符串作为输入并转换为矢量 C++
- 项目中包含多个相同的头文件:C与C++
- HBITMAP 能否包含 alpha 通道信息?
- 当我在结构中包含多个数组时,我的程序会跳过一堆代码
- 如何检查一个字符串是否包含多个其他字符串?
- 带有自动initializer_list包含多个表达式
- 释放包含多个向量的结构的内存
- 如何检查数组是否包含多个元素?
- 如何在 arduino 库中包含多个目录
- std::bind to a std::variant 包含多个 std::函数类型
- 带有多通道内核的图像卷积
- 前向迭代器多通道保证的优势
- 最快/最小方法检查字符串是否包含多个单词
- 8 位(每个样本位数)PCM WAV 文件可以包含多个通道吗?