wave datei länge auslesen
-
Hi, ich möchte herrausfinden wie lang eine wave datei ist!
also ich habe volgendes durch googlen usw herausgefunden:1. der Header einer Wave datei ist folgendermaßen aufgebaut:
struct Standard_Wave_Header { long Riff; // Sollte immer "RIFF" enthalten = 1179011410 long Rl; // Groesse des folgenden "Chunks" long Typ; // Typinformation 4 byte "WAVE" = 1163280727 long Fmt; // Muss "fmt " enthalten = 544501094 long CSize; // Chunksize int Tag; // Meist unbenutzt int nChan; // Zahl der Kanäle long sps; // Samples pro Sekunde long Bps; // Bytes pro Sekunde int Bla; // Blockalign (Byte pro Sample) int Sl; // Samplelänge long Data; // Muss "DATA" enthalten = 1096040772 long Dl; // Datenlänge };
2. ich habe den mal einfach eingelesen und dann Datenlänge / (samplelänge * samples/sek) gerechnet und dachte dabei sollte die länge des sounds rauskommen.
Standard_Wave_Header bla; char blub[100]; FILE *pFile; pFile = fopen("D:\\projekte\\FLB\\geräusche\\Luft_40.5dB(A)_10_Jet.wav", "rb"); fread(&bla, sizeof(Standard_Wave_Header), 1, pFile); long bla2 = bla.Dl/(bla.Sl*bla.sps); MessageBox(NULL, _itoa(bla2, blub, 10), "Bps", MB_OK); fclose(pFile);
-> leider ist irgendwie die Datenlänge immer 0.
vieleicht kann mir ja einer weiterhelfen ! (evtl auch ne andere schnellere methode die länge auszulesen.DANKE !
-
Das, was du als Samplelänge bezeichnest, wird in Bit angegeben. Wenn du also byte-basierend rechnest, musst du den Wert erst noch durch 8 teilen. Was meinst du eigentlich mit "länge des sounds"? Willst du die Gesamtzeit berechnen, die Gesamtanzahl der Samples oder Blöcke? Wenn du mehr Infos rausrückst, kann ich dir vielleicht noch mehr helfen, da ich momentan mit ähnlichen Problemen kämpfe.