Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Курс видеоуроков КРЭКЕРСТВО + ПРОГРАММИРОВАНИЕ 2017
(актуальность: май 2017)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



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


 {....}
 
   private
     procedure OpenMedia(WaveFile : string);
     function GetStatus(StatusRequested : DWord) : longint;
     procedure CloseMedia;
 
 {....}
 
 var
   MyError, dwFlags: Longint;
   FDeviceID : Word;
 
 {....}
 
 uses
   MMSystem;
 
 {....}
 
 procedure TForm1.OpenMedia(WaveFile: string);
 var
   MyOpenParms: TMCI_Open_Parms;
 begin
   with MyOpenParms do
   begin
     dwCallback       := Handle; // TForm1.Handle 
     lpstrDeviceType  := PChar('WaveAudio');
     lpstrElementName := PChar(WaveFile);
   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, here to specify a particular device 
   if MyError = 0 then
     FDeviceID := MyOpenParms.wDeviceID
   else
     raise Exception.Create('Open Failed');
 end;
 
 function TForm1.GetStatus(StatusRequested: DWORD): Longint;
 var
   MyStatusParms: TMCI_Status_Parms;
 begin
   dwFlags := MCI_WAIT or MCI_STATUS_ITEM;
   with MyStatusParms do
   begin
     dwCallback := Handle;
     dwItem     := StatusRequested;
   end;
   MyError := mciSendCommand(FDeviceID,
     MCI_STATUS,
     MCI_WAIT or MCI_STATUS_ITEM,
     Longint(@MyStatusParms));
   if MyError = 0 then
     Result := MyStatusParms.dwReturn
   else
     raise Exception.Create('Status call to get status of ' +
       IntToStr(StatusRequested) + ' Failed');
 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 Exception.Create('Close Failed');
     end;
   end;
 end;
 
 
 //Example: 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   if OpenDialog1.Execute then
   begin
     OpenMedia(OpenDialog1.FileName);
     with ListBox1.Items do
     begin
       Add('Average Bytes / Sec : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_AVGBYTESPERSEC)));
       Add('Bits / Sample : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_BITSPERSAMPLE)));
       Add('Samples / Sec : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_SAMPLESPERSEC)));
       Add('Channels : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_CHANNELS)));
     end;
     CloseMedia;
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS