Headerdaten einer wav Datei auslesen

IT-homas

Mitglied
Guten Abend,

ich habe ein Programm zu schreiben, dass die Bestandteile des Headers einer wav Datei über printf ausgibt. Insgesamt klappt das auch recht gut. Bloß folgen z.B. auf RIFF zusätzliche Zeichen und es wird WAVEfmt, statt WAVE ausgegeben.

Woran liegt das?

C:
#include <stdio.h>
#include <stdlib.h>

struct Wav {
    char ChunkID[4];
    int ChunkSize;
    char Format[4];
    char subChunk1ID[4];
    int subChunk1Size;
    short audioFormat;
    short numChannels;
    int sampleRate;
    int byteRate;
    short blockAlign;
    short bitsPerSample;
    char subChunk2ID[4];
    int subChunk2Size;
};

union ReadWav {
    struct Wav header;
    char c[44];
};
int main()
{
    union ReadWav u;
    char i;
    FILE *datei;
    in=fopen("test.wav","rb");
    for(i=0; i<43; i++){
        u.c[i]=fgetc(datei);
    }

    printf("ChunkID: %s\n",u.header.ChunkID);
    printf("ChunkSize: %d\n",u.header.ChunkSize);
    printf("Format: %s\n", u.header.Format);
    printf("subChunk1ID: %s\n", u.header.subChunk1ID);
    printf("subChunk1Size: %d\n", u.header.subChunk1Size);
    printf("audioFormat: %d\n", u.header.audioFormat);
    printf("numChannels: %d\n", u.header.numChannels);
    printf("sampleRate: %d\n", u.header.sampleRate);
    printf("byteRate: %d\n", u.header.byteRate);
    printf("blockAlign: %d\n", u.header.blockAlign);
    printf("bitsPerSample: %d\n", u.header.bitsPerSample);
    printf("subChunk2ID: %s\n", u.header.subChunk2ID);
    printf("subChunk2Size: %d\n", u.header.subChunk2Size);

    return 0;
}

asugabe.PNG
Vielen Dank und freundliche Grüße,

Thomas
 

Anhänge

  • asugabe.PNG
    asugabe.PNG
    8,3 KB · Aufrufe: 0

Neue Themen


Zurück
Oben