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

Воспроизведение MP3 в 64-битных Delphi-приложениях на Windows7 и выше: простой способ через Windows API

Delphi , ОС и Железо , Windows

Разработчики, работающие с языками программирования Pascal и использующие среду разработки Delphi, часто сталкиваются с необходимостью интеграции мультимедийных функций в свои приложения. Одной из таких задач является воспроизведение аудио в формате MP3, особенно в приложениях, предназначенных для 64-битных систем Windows 7 и выше.

Проблема

При разработке приложений на Delphi 10.2 Tokyo с использованием 64-битной компиляции, может возникнуть необходимость воспроизведения MP3-файлов. Ранее популярным решением было использование библиотеки DSPack, однако она не поддерживает 64-битную компиляцию. Еще один вариант — библиотека BASS, но и она не работает в 64-битной версии. Предпочтительным решением является использование функций, работающих напрямую с Windows API, без необходимости включения внешних DLL.

Решение

Одно из простых решений — использование функции mciSendString, которая является частью Media Control Interface (MCI) Windows API. Эта функция позволяет управлять воспроизведением мультимедийных файлов, включая MP3.

Вот пример кода на Object Pascal (Delphi), который воспроизводит MP3-файл с использованием mciSendString:

uses
  Winapi.MMSystem;

procedure TForm1.PlayMP3(const FileName: string);
var
  Result: Cardinal;
begin
  Result := mciSendString(PChar Format('open "%s" type mpegvideo alias song1', [FileName]), nil, 0, 0);
  Result := mciSendString('play song1', nil, 0, 0);
end;

Этот код открывает указанный MP3-файл и воспроизводит его. Важно не забыть закрыть алиас после завершения воспроизведения:

Result := mciSendString('close song1', nil, 0, 0);

Для более удобного использования можно создать обертку, которая будет воспроизводить файл в отдельном потоке с ожиданием завершения и автоматически закрывать алиас по завершению:

uses
  Classes;

type
  TMP3Player = class(TThread)
  private
    FFileName: string;
  protected
    procedure Execute; override;
  public
    constructor Create(const AFileName: string);
  end;

constructor TMP3Player.Create(const AFileName: string);
begin
  inherited Create(True);
  FreeOnTerminate := True;
  FFileName := AFileName;
end;

procedure TMP3Player.Execute;
var
  Result: Cardinal;
begin
  Result := mciSendString(PChar Format('open "%s" type mpegvideo alias song1', [FFileName]), nil, 0, 0);
  Result := mciSendString('play song1 wait', nil, 0, 0);
  Result := mciSendString('close song1', nil, 0, 0);
end;

Используя этот подход, вы сможете воспроизводить MP3-файлы в 64-битных Delphi-приложениях, не прибегая к использованию внешних библиотек.

Заключение

Использование mciSendString является эффективным и простым способом интеграции воспроизведения MP3 в 64-битные Delphi-приложения, не требующим включения дополнительных DLL. Это решение напрямую работает с Windows API, что делает его предпочтительным для многих разработчиков.

Создано по материалам из источника по ссылке.

Разработчики Delphi на Windows7 и выше используют Windows API для воспроизведения MP3 в 64-битных приложениях без внешних библиотек.


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

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




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


:: Главная :: Windows ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 11:42:56/0.0034430027008057/0