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.


Anmelden zum Antworten