![]() |
Länge einer Wav-Datei
Hi,
bei Swissdelphicenter gibts ja 2 Funktionen zum feststellen der Länge einer Wav-Datei. Ich habe die Datei jetzt aber schon so geöffnet:
Delphi-Quellcode:
Wie kann ich da gleich auch die Länge rausfinden der Wav-Datei?
procedure TForm1.PlayWav(fname : string);
var mciOpenParms: TMCI_Open_Parms; mciPlayParms: TMCI_Play_Parms; begin if waveOutGetNumDevs < 1 then { Any devices? } ShowMessage('No wave devices available!') else begin FillChar(mciOpenParms, SizeOf(TMCI_Open_Parms), 0); FillChar(mciPlayParms, SizeOf(TMCI_Play_Parms), 0); with mciOpenParms do { Set MCI to play WAV files } begin lpStrDeviceType := 'waveaudio'; lpstrElementName := pchar(fname); end; if mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_ELEMENT, Longint(@mciOpenParms)) = 0 then { Open Device } begin wDeviceID := mciOpenParms.wDeviceID; { Grab Device ID for later } mciPlayParms.dwCallback := Handle; { Set our Handle for Callback message } mmsystem.mc mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY, LongInt(@mciPlayParms)); { Kick off play of File; await message } end; end; end; Viele Grüße Flo |
Re: Länge einer Wav-Datei
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn es sich um einfache unkomprimierte Wave-Files handelt (PCM), dann hab ich just gestern was dazu gebaut :). Habs etwas beschnitten, so dass nur die Header ausgelesen werden.
gruss, dizzy |
Re: Länge einer Wav-Datei
danke ich gucks mir mal an!
|
Re: Länge einer Wav-Datei
Du könntest das File mit dem MediaPlayer (Seite System) öffnen und mit .Length die Länge auslesen
|
Re: Länge einer Wav-Datei
danke, dizzy's Lsg. hat mir tatsächlich geholfen, weil ich sowieso seinen Code benutze zur Visualisierung...
|
Re: Länge einer Wav-Datei
Frage wie Kann ich den nun die Wäve Länge für ein Sleep Komando benutzen benutzen
Delphi-Quellcode:
hat jemand eine Bessere Idee ohne das das Programm einfriert dann herr damit.
procedure TForm1.bakenzeitTimer(Sender: TObject);
var ba:string; wa:string; wp : TWaveProvider; //wave:string; {$J+} const CanPlay: Boolean = True; {$J-} begin if (form3.Bake.Checked = true) then begin wp := TWaveProvider.Create('bake1.wav'); // ein paar Infos über's Wave ausgeben // Memo1.Lines.Add(+IntToStr(wp.DataHeader.length div wp.FormatData.AvgBytesPerSec)); FreeAndNil(wp); end; check.Enabled:=false; bakenzeit.Interval:=StrToInt(form3.bakenzeit.text)*1000 ; onoff.Picture.Bitmap.LoadFromResourceName(HInstance,'ON_BIT'); if pin = 'dtr' then DTR(true); if pin2 = 'rts' then RTS(true); sleep (2000); canPlay :=True; if CanPlay then begin //ba:='+wave+'; sndPlaySound(PChar('bake1.wav'),SND_ASYNC); CanPlay := False; Memo1.Lines.Add('Duration in Sec.: '+IntToStr(wp.DataHeader.length div wp.FormatData.AvgBytesPerSec)); sleep (+InToStr+); //// Übergabe der Zeit von Memo1.Lines Add sprich die Sekunden die das wave lang ist müssen an Sleep übergeben werden mit einem *1000 damit das programm wartet bis das wave zu ende gespielt hat befor DTR und RTS auf false gehen // sleep (20000); // bakenzeit.Enabled:=false; //check.Enabled:=true; if pin = 'dtr' then DTR(false); if pin2 = 'rts' then RTS(false); onoff.Picture.Bitmap.LoadFromResourceName(HInstance,'OFF_BIT'); check.Enabled:=true; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 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