안녕하세요 저는 wav 파일을 입력 한 다음 구조에 wah 헤더를 넣은 다음 출력하는 코드가 있습니다. audioFormat과 numChannels를 제외한 모든 것이 좋지만 이유를 이해할 수 없습니다. 예를 들어, audioFormat : 1 및 numChannels : 2를 출력해야하지만 audioFormat : 0 및 numChannels : 1을 출력합니다. 나는 이것이 왜 일어나는 지 이해할 수 없다.wav 헤더를 C로 인쇄하기
typedef struct wavHeader
{
byte chunckID[4];
dword chunckSize;
byte format[4];
byte subchunk1ID[4];
word subchunk1Size;
word audioFormat;
word numChannels;
dword sampleRate;
dword byteRate;
word blockAlign;
word bitsPerSample;
byte subchunk2ID[4];
dword subchunk2Size;
}wav_header;
int check_file_name(char *filename);
void list(char **array) //argv
{
wav_header wavHeader;
FILE *pFile;
if(check_file_name(array[2]) == 0)
{
printf("wrong file name\n");
exit(1);
}
pFile = fopen (array[2] ,"r");
if(pFile != NULL)
{
fread(&wavHeader, sizeof(wav_header), 1, pFile);
fclose(pFile);
printf("ChunkID: %c%c%c%c\n",wavHeader.chunckID[0],wavHeader.chunckID[1],wavHeader.chunckID[2],wavHeader.chunckID[3]);
printf("ChunkSize: %d\n",wavHeader.chunckSize);
printf("Format: %c%c%c%c\n",wavHeader.format[0],wavHeader.format[1],wavHeader.format[2],wavHeader.format[3]);
printf("SubChunk1ID: %c%c%c%c\n",wavHeader.subchunk1ID[0],wavHeader.subchunk1ID[1],wavHeader.subchunk1ID[2],wavHeader.subchunk1ID[3]);
printf("Subchunk1Size: %d\n",wavHeader.subchunk1Size);
printf("AudioFormat: %d\n",wavHeader.audioFormat);
printf("NumChannels: %d\n",wavHeader.numChannels);
printf("SampleRate: %d\n",wavHeader.sampleRate);
printf("ByteRate: %d\n",wavHeader.byteRate);
printf("BlockAlign: %d\n",wavHeader.blockAlign);
printf("BitsPerSample: %d\n",wavHeader.bitsPerSample);
printf("Subchunk2ID: %c%c%c%c\n",wavHeader.subchunk2ID[0],wavHeader.subchunk2ID[1],wavHeader.subchunk2ID[2],wavHeader.subchunk2ID[3]);
printf("Subchunk2Size: %d\n",wavHeader.subchunk2Size);
}
else
{
printf("This file doesn't exit\n");
exit(1);
}
}
다른 도구로'.wav' 파일의 헤더를 보려고 했습니까? 어쩌면 잘못된 값을 기대하고 있지만 프로그램이 올바른 값을 인쇄 중일 수 있습니다. – Paulpro
한 단어 : 맞춤. (어쩌면 역시 : 패딩) –
오디오 포맷 annd num wav 파일에있는 채널은 01 00 02 00입니다. 따라서 0001은 오디오 포맷 용이고 0002는 num 채널 용입니다. 그래서 나는 audioFormat : 1과 numChannels 2를 출력 할 것을 기대하고 있었다. –