[問題] wav讀取問題
最近在寫一個音訊處理的程式
在讀取wav資料的時候遇到了個問題
程式碼如下
input = fopen("C:\\sig+n.wav", "rb");
if (!strcmp(id, "RIFF")){
fread(&size, sizeof(unsigned long), 1, input);
fread(id, sizeof(char), 4, input);
id[4] = '\0';
if (!strcmp(id,"WAVE")){
fread(id, sizeof(char), 4, input);
fread(&format_length, sizeof(unsigned long),1,input);
fread(&format_tag, sizeof(short), 1, input);
fread(&channels, sizeof(short),1,input);
fread(&sample_rate, sizeof(unsigned long), 1, input);
fread(&avg_bytes_sec, sizeof(unsigned long), 1, input);
fread(&block_align, sizeof(short), 1, input);
fread(&bits_per_sample, sizeof(short), 1, input);
fread(id, sizeof(char), 4, input);
fread(&data_size, sizeof(unsigned long), 1, input);
fread(&data, sizeof(short), 3, input);
data[3] = '\0';
printf("%d %d %d\n", data[0], data[1], data[2]);
}
else{
printf("Error: RIFF file but not a wave file\n");
}
}
else{
printf("Error: not a RIFF file\n");
}
wav header的44個byte都已經按照格式讀取出來了
可是接下來所讀出來的資料
卻和用matlab的wavread的結果相差甚遠
舉例來說
我data陣列裡的第一筆資料是778 matlab裡的是0.0235
想請問各位高手
在c當中讀取出來的音訊檔需要在做甚麼處理嗎
不然以short型式讀取出來的資料怎麼有小數點?
謝謝大家 拜託大家幫幫忙
這個問題困擾了很久
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.78.95.9
推
04/01 10:17, , 1F
04/01 10:17, 1F
→
04/01 10:19, , 2F
04/01 10:19, 2F
推
04/01 11:23, , 3F
04/01 11:23, 3F
→
04/01 11:24, , 4F
04/01 11:24, 4F
→
04/01 11:24, , 5F
04/01 11:24, 5F
推
04/01 12:11, , 6F
04/01 12:11, 6F
→
04/01 12:11, , 7F
04/01 12:11, 7F
→
04/01 15:42, , 8F
04/01 15:42, 8F
→
04/01 16:41, , 9F
04/01 16:41, 9F
→
04/01 16:42, , 10F
04/01 16:42, 10F
→
04/01 16:42, , 11F
04/01 16:42, 11F