我意识到忽略这个想法对我来说是不好的,因为从这个角度来看,我没有读过关于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 -bit 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);
}
}
答案 0 :(得分:1)
这个结构通常描述了WAV音频数据的格式,在MSDN中有描述:WAVEFORMATEX structure:
nBlockAlign
值是与样本nSamplesPerSec
值nChannels
个值,每个值都来自wBitsPerSample
也就是说,每个样本8位的两个通道文件对于每秒音频数据都有nSamplesPerSec
对,每对包含两个8位值用于每个通道。
(here是WAV文件中存在此结构的示例 - 尽管这是一个24位/样本的更复杂的情况,但您应该明白这一点。)