![]() |
Einzelne Abtastwerte von WAV auslesen
Hallo,
ich würde gerne die einzelnen Abtastwerte einer Wave auslesen. (Wenn die Wave-Datei eine 44,1kHz Abtastung hat, so habe ich alle 1/44100 = ca. 2,23*10^-5 Sekunden einen Abtastwert.) Das ganze könnte ich doch relativ einfach" binär auslesen oder? ( ![]() Gruß Ben P.S.: Wie mache ich das am besten bei mp3s (ich würde die mp3 ungerne vorher in WAV umkonvertieren)? Ist ein solches Auslesen mit entsprechenden Bibliotheken einfach? |
Re: Einzelne Abtastwerte von WAV auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
das direkt auslesen geht nicht so ohne weiteres, da du nicht weißt, welcher Codec verwendet wurde. Ich habe da mal eine Unit gefunden, in der eine Klasse zum konvertieren in PCM drin ist.
Delphi-Quellcode:
Ungetestet, nur aus eigenem Code kopiert und dann abgewandelt - keine Garantie auf Lauffähigkeit, insbesondere das 8bit-zu-16bit-Konvertieren.
uses
WaveIO; type TAudioData = array of Smallint; procedure LoadAudioFile(const FileName: String; var Data: TAudioData; out Format: TWaveFormatEx); var w1: TFileWaveStream; pcmw: TPCMWaveReader; I, Size: Integer; Data2: array of Byte; begin w1 := TFileWaveStream.Create('C:\FileName.wav', nil); try pcmw := TPCMWaveReader.Create(w1); try Format := pcmw.Format^; case Format.wBitsPerSample of 8: //nach 16 Bit konvertieren begin Size := pcmw.Size * Format.nBlockAlign; SetLength(Data2, Size); SetLength(Data, Integer); pcmw.Read(Dat2a[0], pcmw.Size); for I := Size - 1 downto 0 do Data[I] := (Data2[I] - 128) * (32768 div 128); end; 16: begin SetLength(Data, pcmw.Size * Format.nBlockAlign div 2); pcmw.Read(Data[0], pcmw.Size); end; else //Exception oder so end; finally pcmw.Free; end; finally w1.Free; end; end; ... var AudioData: TAudioData; Format: TWaveFormatEx; Sample: Shortint; ... LoadAudioFile('D:\Test.wav', AudioData, Format); Sample := AudioData[Trunc(ZeitInSekunden * Format.nSamplesPerSec)]; Auf irgendeiner CD hab ich das komplette WaveIO-Zeugs gesichert. Da wäre dann auch ne Readme dabei. Muss ich aber erst finden. Mfg FAlter |
Re: Einzelne Abtastwerte von WAV auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht hilft dir das Project im Anhang weiter. Das hab ich auf meiner Festplatte gefunden ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz