Delphi World - Запись с помощью MediaPlayer
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Запись с помощью MediaPlayer

Автор: Nick Hodges

Origin:
- Ори, джинн! Ори, с#ка!

Компонент Mediaplayer работает только с корректными звуковыми файлами и не работает с файлами нулевого размера. Нижеприведенная функция создаст звуковой файл с размером 1. Вариантная запись. Хотелось бы видеть лучшее решение, но пока такой вариант работает у меня без проблем.


function CreateNewWave(NewFileName: string): Boolean;
var
  DeviceID: Word;
  Return: LongInt;
  MciOpen: TMCI_Open_Parms;
  MciRecord: TMCI_Record_Parms;
  MciPlay: TMCI_Play_Parms;
  MciSave: TMCI_SaveParms;
  MCIResult: LongInt;
  Flags: Word;
  TempFileName: array[0..255] of char;
begin
  MediaPlayer.Close;
  try
    StrPCopy(TempFileName, NewFilename);

    MciOpen.lpstrDeviceType := 'waveaudio';
    MciOpen.lpstrElementName := '';
    Flags := Mci_Open_Element or Mci_Open_Type;
    MCIResult := MciSendCommand(0, MCI_OPEN, Flags, LongInt(@MciOpen));
    DeviceID := MciOpen.wDeviceId;

    MciRecord.dwTo := 1;
    Flags := Mci_To or Mci_Wait;
    MCIResult := MciSendCommand(DeviceID, Mci_Record, Flags,
      LongInt(@MciRecord));

    mciPlay.dwFrom := 0;
    Flags := Mci_From or Mci_Wait;
    MciSendCommand(DeviceId, Mci_Play, Flags, LongInt(@MciPlay));

    mciSave.lpfileName := TempFilename.CString;
    Flags := MCI_Save_File or Mci_Wait;
    MCIResult := MciSendCommand(DeviceID, MCI_Save, Flags, LongInt(@MciSave));

    Result := MciSendCommand(DeviceID, Mci_Close, 0, LongInt(nil)) = 0;
  end;
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования