wie kann ich aus einer beliebigen Wave-Datei den Header bzw.
die darin enthaltenen Informationen mit C++ (VC++ 6.0)
auslesen? Mich interessieren vor allem die Sampling-Frequenz,
die Anzahl der Sampling-Bits (8 oder 16) und ob die Datei mono
oder stereo ist. Wenn möglich, sollte man diese Werte auch
weiterarbeiten können, also z.B.
if (anzahl_samplebits==16) machedas();
Hi Robert,
hier ein kleines „Quick und Dirty“ c-prg. Kannst natürlich auch die fstream-Klasse in c++ benutzen.
Gruß Frank
#include
struct waveheader
{
// RIFF - CHUNK
char riff\_name[4]; // Enthält den Namen "RIFF"
long riff\_laenge; // Enthält Länge des Riffchunks
char riff\_type[4]; // Hier steht "WAVE"
// FMT - CHUNK
char fmt\_name[4]; // Enthält "FMT"
long fmt\_laenge; // Länge des fmt-chunks
short formattyp; // 0=Mono, 1=Stereo
short kanalzahl; // Anz. der benutzten Kanäle
long samplerate; // Sample-Rate in Herz
long b\_pro\_sec; // Bytes pro Sekunde
short b\_pro\_sample; // Bytes pro Sample 1=8bitMono 2=8bitStereo 4=16bitStereo
short Bits\_per\_sample;
};
void main(void)
{
waveheader w;
FILE \*fptr;
if ( !(fptr=fopen("lalala.wav", "rb"))) return;
fread((void \*) &w, sizeof(w), 1, fptr);
if (w.Bits\_per\_sample==16) machedas();
fclose(fptr);
}