Определить длину WAV файла

Советы » Аудио » Определить длину WAV файла

type

EMyMCIException = class

(Exception); var

FDeviceID: Word; MyError, dwFlags: Longint; procedure

TForm1.GetWaveLength; var

WaveLen: DWORD; begin

OpenMedia('C:Hickory.wav'); SetMediaTimeFormat; WaveLen := GetMediaStatus(MCI_STATUS_LENGTH); CloseMedia; Form1.label1.Caption := IntToStr(WaveLen) + 'mS'; end

; procedure

TForm1.OpenMedia(FileName: string

); var

MyOpenParms: TMCI_Open_Parms; begin

with

MyOpenParms do

begin

dwCallback := Handle; // TForm1.Handle lpstrDeviceType := PChar('WaveAudio'); lpstrElementName := PChar(FileName); end

; {with MyOpenParms} dwFlags := MCI_WAIT or

MCI_OPEN_ELEMENT or

MCI_OPEN_TYPE; MyError := mciSendCommand(0, MCI_OPEN, dwFlags, Longint(@MyOpenParms)); // one could use mciSendCommand(DevId, etc here to specify a particular device if

MyError = 0 then

FDeviceID := MyOpenParms.wDeviceID else

raise

EMyMCIException.Create('Open Failed'); end

; procedure

TForm1.SetMediaTimeFormat; var

MySetParms: TMCI_Set_Parms; begin

if

FDeviceID <> 0 then

begin

dwFlags := MCI_WAIT or

MCI_SET_TIME_FORMAT; MySetParms.dwCallback := Handle; // TForm1.Handle MySetParms.dwTimeFormat := MCI_FORMAT_MILLISECONDS; MyError := mciSendCommand(FDeviceID, MCI_SET, dwFlags, Longint(@MySetParms)); if

MyError <> 0 then

raise

EMyMCIException.Create('Status Failed'); end

; end

; function

TForm1.GetMediaStatus(StatusItem: DWORD): DWORD; var

MyStatusParms: TMCI_Status_Parms; begin

if

FDeviceID <> 0 then

begin

dwFlags := MCI_WAIT or

MCI_STATUS_ITEM; MyStatusParms.dwCallback := Handle; // TForm1.Handle MyStatusParms.dwItem := StatusItem; MyError := mciSendCommand(FDeviceID, MCI_STATUS, dwFlags, Longint(@MyStatusParms)); if

MyError = 0 then

Result := MyStatusParms.dwReturn else

begin

raise

EMyMCIException.Create('Status Failed'); end

; end

; end

; procedure

TForm1.CloseMedia; var

MyGenParms: TMCI_Generic_Parms; begin

if

FDeviceID <> 0 then

begin

dwFlags := 0; MyGenParms.dwCallback := Handle; // TForm1.Handle MyError := mciSendCommand(FDeviceID, MCI_CLOSE, dwFlags, Longint(@MyGenParms)); if

MyError = 0 then

FDeviceID := 0 else

begin

raise

EMyMCIException.Create('Close Failed'); end

; end

; end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com