0
我意識到對我來說忽略這個想法是不好的,因爲我沒有讀到關於number of channels
和bits per sample
的任何內容。我的理由是我不確定2聲道8位PCM文件的樣本是怎麼樣的。可以將8位(每個採樣位)的PCM WAV文件包含多個通道?
是否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文件,因爲您將1個八位字節數據讀取到'uint32_t'並保留一些未初始化的位。使用'uint8_t'讀取類型爲'uint8_t'的數據。 – MikeCAT
由於它是8位* 2通道,所以2通道8位WAV包含16位塊。 – MikeCAT
@MikeCAT只需確認,這意味着1聲道8位WAV包含8位塊? – Nogurenn