![]() |
Wav-Dateien schneiden
weiß jemand, wie ich am besten teile aus einer wave-datei extrahieren kann? z.b. ein lied ist 10 sec. lang und ich möchte den Inhalt des Liedes von der 2ten bis zur 6ten sekunde in neue Wav-Datei speichern...
danke schonmal mumu |
Re: Wav-Dateien schneiden
Ich habs jetzt doch selbst hinbekommen:
Delphi-Quellcode:
dieser code extrahiert nur die erste sekunde aus einer wav-datei... lässt sich aber ohne probleme beliebig anpassen...
Type
TWavHeader = Record RiffStr : Array[$00..$03] Of Char; { ID Block = 'RIFF' } FileSize : LongInt; { Size of the complete file - 8bytes } WaveStr : Array[$00..$03] Of Char; { ID Block = 'WAVE' } FmtStr : Array[$00..$03] Of Char; { ID Block = 'fmt ' } HeadSize : LongInt; { Size of header to this point} FormatTag : Word; { Format Tag} Channels : Word; { Numer of channels} SampleRate : LongInt; { Sample rate in kHz} BytesPSec : LongInt; { Bytes per second = SampleRate } BlockAlign : Word; { Block align} BitsPSmp : Word; { Bits per sample} DataStr : Array[$00..$03] Of Char; { ID Block = 'data' } SmpLength : LongInt; { Numer of bytes in the sample } End; var ReadDatei, WriteDatei: THandle; WriteHeader, Readheader: TWavHeader; count: integer; buffer: char; begin ReadDatei := FileOpen('C:\Test.wav',fmOpenRead); WriteDatei := FileCreate('C:\test2.wav'); FileSeek(ReadDatei, 0, 0); FileRead(ReadDatei, ReadHeader, sizeof(TWavHeader)); WriteHeader := ReadHeader; FileSeek(WriteDatei, 0, 0); FileWrite(WriteDatei, WriteHeader, sizeof(TWavHeader)); FileSeek(WriteDatei, Sizeof(TWavHeader), 0); Fileseek(ReadDatei, Sizeof(TWavHeader), 0); count := 0; repeat FileRead(ReadDatei, buffer, 1); FileWrite(WriteDatei, buffer, 1); count := count + 1; until count >= ReadHeader.BytesPSec; FileClose(ReadDatei); FileClose(WriteDatei); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz