Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
Speaker [7]
Аудио [51]
Видео [11]
Джойстик [2]
Запись звука [5]
Микрофон [3]

Наш опрос
Какие компоненты добавлять больше?
Всего ответов: 49

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Мультимедиа » Аудио

Определить длину 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;
Категория: Аудио | Добавил: Skinner (07.07.2008)
Просмотров: 403 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz