Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Запись с помощью MediaPlayer

Delphi , Мультимедиа , Запись звука

Запись с помощью 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, использующий компонент MediaPlayer, для создания нового аудиофайла размером 1 байт. Функция CreateNewWave принимает в качестве входного параметра имя файла и возвращает булевое значение, указывающее успешность операции.

Код использует различные структуры и константы из библиотеки MCI (Media Control Interface), которая используется для управления мультимедийными устройствами. Основные шаги функции следующие:

  1. Закройте любое открытое медиа-устройство с помощью MediaPlayer.Close.
  2. Откройте новое аудио-устройство типа 'waveaudio' с помощью MCI_OPEN.
  3. Установите параметры записи для записи 1 байта данных с помощью MCI_Record.
  4. Начните воспроизведение зафиксированных данных с помощью MCI_Play.
  5. Сохраните зафиксированные данные в файл с помощью MCI_Save.
  6. Закройте медиа-устройство с помощью MCI_Close.

Код использует различные механизмы обработки ошибок, включая блоки try-except и проверку возвращаемых значений MCI команд.

Вот некоторые предложения по улучшению кода:

  1. Рассмотрите возможность использования более описательных имен переменных для улучшения понимания кода.
  2. Вместо жесткого кодирования имени файла в функции StrPCopy, рассмотрите возможность использования параметризованного подхода, чтобы пользователь мог указать имя файла.
  3. Функция MciSendCommand используется широко по всему коде. Рассмотрите возможность создания отдельной функции или процедуры для упаковки этой логики и упрощения ее повторного использования.
  4. Использование типа LongInt возвращаемого значения функции CreateNewWave может не быть необходимым, поскольку функция возвращает булевое значение, указывающее успешность операции или неудачу.
  5. Код не проверяет, был ли создан файл успешно, или возникли ошибки при записи данных. Рассмотрите возможность добавления дополнительной обработки ошибок для предоставления более надежного обратного связи пользователю.

В целом, код работает корректно и предоставляет основное пример использования компонента MediaPlayer для создания аудиофайла. Однако некоторые улучшения можно было бы сделать для улучшения читаемости, поддерживаемости и эффективности кода.

Компонент Media Player в Delphi позволяет создавать звуковые файлы с помощью функции CreateNewWave, которая записывает аудиосигнал в файл с размером 1 секунды.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Запись звука ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 04:17:32/0.00571608543396/0