首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 入門 Bass.dll 播放 MP3:初始化、開啟、播放、暫停、停止完整指南

     編輯:Delphi

前言

Bass.dll 是功能強大的音頻庫,支援 MP3、WAV、OGG、FLAC 等格式。本文為系列首篇,詳細講解 Delphi 中從零開始:複製 DLL、配置路徑、初始化設備、建立播放流、基本播放控制(播放/暫停/停止)的完整流程。

環境準備三步驟

  1. 部署 Bass.dll:將 bass.dll 放入系統目錄(System32)、程式目錄或 PATH 環境變數指定目錄。
  2. 放置 bass.pas:將 Delphi 頭文件 bass.pas 放入自定義目錄(如 C:\Imports\Bass24)。
  3. 配置 Library Path:Delphi 選單 Tools → Options → Library → Library Path 加入上述目錄。

核心 API 速查

函數關鍵參數說明
BASS_Initdevice=-1, freq=44100, flags=0, win=0, clsid=nil初始化輸出設備,-1 為預設設備
BASS_StreamCreateFilemem=False, file=PAnsiChar, offset=0, length=0, flags=0從文件建立播放流,返回 HSTREAM
BASS_ChannelPlayhandle, restart=False開始/繼續播放,restart=True 從頭播放
BASS_ChannelPausehandle暫停播放
BASS_ChannelStophandle停止播放(位置歸零)
BASS_StreamFreehandle釋放流資源
BASS_Free-釋放 Bass 庫所有資源

關鍵代碼實現

1. 表單建立:版本檢查與初始化

procedure TForm1.FormCreate(Sender: TObject);
begin
  {檢查 bass.pas 編譯版本與運行時 bass.dll 版本主版本號是否一致}
  if HiWord(BASS_GetVersion) <> BASSVERSION then
    MessageBox(0, 'Bass.dll 版本不符!', nil, MB_ICONERROR);
  {初始化:device=-1(預設), 44100Hz, 旗標0, 視窗句柄0, GUID=nil}
  if not BASS_Init(-1, 44100, 0, 0, nil) then
    ShowMessage('初始化錯誤');
end;

2. 開啟按鈕:選擇文件並建立流

procedure TForm1.Button1Click(Sender: TObject);
var
  Mp3Path: AnsiString;
begin
  OpenDialog1.Filter := 'Mp3 文件(*.mp3)|*.mp3|Wav 文件(*.wav)|*wav';
  if OpenDialog1.Execute then
    Mp3Path := AnsiString(OpenDialog1.FileName);

  {若已有舊流先釋放}
  BASS_StreamFree(hs);
  {建立播放流}
  hs := BASS_StreamCreateFile(False, PAnsiChar(Mp3Path), 0, 0, 0);
  if hs < BASS_ERROR_ENDED then
    Caption := '打開失敗'
  else
    Caption := string(Mp3Path); {顯示文件路徑}
end;

3. 播放/暫停/停止按鈕

procedure TForm1.Button2Click(Sender: TObject); {播放}
begin
  BASS_ChannelPlay(hs, False); {False=繼續播放,True=從頭播放}
end;

procedure TForm1.Button3Click(Sender: TObject); {暫停}
begin
  BASS_ChannelPause(hs);
end;

procedure TForm1.Button4Click(Sender: TObject); {停止}
begin
  BASS_ChannelStop(hs);
end;

4. 表單銷毀:釋放資源

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BASS_Free; {釋放 Bass 庫}
end;

運行效果

簡潔介面:四顆按鈕控制開啟、播放、暫停、停止,標題顯示當前載入文件路徑。

基礎播放器介面

完整單元代碼

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Bass;

var
  hs: HSTREAM; {流句柄}

{ ... 完整實現代碼 ... }

end.

常見問題排查

  • BASS_Init 失敗:檢查 bass.dll 是否在 PATH 中,或嘗試指定 device 參數(0=No Sound, 1=第一個設備...)。
  • BASS_StreamCreateFile 返回 0:文件路徑編碼問題(Unicode Delphi 需用 AnsiString/PAnsiChar),或文件格式不支援/損壞。
  • 無聲音:確認系統音量、設備未被獨佔、BASS_Init 的 freq 與音頻采樣率兼容。

總結

掌握「初始化 → 建流 → 播放控制 → 釋放」五步驟,即可在 Delphi 中快速集成 Bass.dll 播放 MP3,為後續進階功能(均衡器、特效、視覺化)打下基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved