TMediaPlayer (System 分頁) 是 Delphi 多媒體開發的核心元件,封裝 Windows MCI (Media Control Interface) 命令,可控制 CD-ROM、MIDI、WaveAudio、AVIVideo、VCR 等裝置。本文系統整理其 9 大功能按鈕、關鍵屬性、核心方法與實戰程式碼範例。
| 按鈕 | 方法 | 功能 |
|---|---|---|
| Play | Play | 播放/錄製 |
| Pause | Pause | 暫停 |
| Stop | Stop | 停止 |
| Next | Next | 下一軌/幀 |
| Prev | Prev | 上一軌/幀 |
| Step | Step | 單步前進 |
| Back | Back | 單步後退 |
| Record | StartRecording | 開始錄製 |
| Eject | Eject | 彈出媒體 |
可透過 VisibleButtons、EnabledButtons 屬性集合顯示/啟用特定按鈕。
| 屬性 | 用途 | 備註 |
|---|---|---|
DeviceType | 指定多媒體裝置類型 | dtAutoSelect, dtCDAudio, dtWaveAudio, dtMIDISequencer, dtAVIVideo 等,**必須設定** |
FileName | 媒體檔案路徑 | 針對檔案型裝置 (Wave, MIDI, AVI) |
Track | CD 音軌編號 | 1-based |
StartPos / EndPos | 播放區段起訖位置 | 配合 TimeFormat (tfMilliseconds, tfTMSF 等) |
Notify | 完成時發送訊息 | 需處理 OnNotify 事件 |
Wait | 同步/非同步執行 | True=阻塞等待完成 |
Shareable | 允許其他應用共用裝置 |
// 程式啟動自動播放 CD 音樂
procedure TForm1.FormCreate(Sender: TObject);
begin
with MediaPlayer1 do
begin
DeviceType := dtCDAudio;
Visible := False; // 隱藏控制列
Open;
Play;
end;
end;
將目前載入的媒體存為 FileName 指定的檔案。不支援儲存的裝置 (如 VideoDisc) 會忽略。
// 按鈕點擊:倒帶並播放 WAV
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.DeviceType := dtWaveAudio;
MediaPlayer1.FileName := 'C:\Windows\Chimes.wav';
MediaPlayer1.Rewind;
MediaPlayer1.Play;
end;
與 Play 不同:Play 總是從 StartPos 開始;Resume 從暫停位置繼續。
MediaPlayer1.Close;
若已暫停則維持暫停;Pause 在某些裝置上若已暫停可能改為繼續播放。
procedure TForm1.PlayWavAsync(const FileName: string);
begin
with MediaPlayer1 do
begin
Close; // 確保乾淨狀態
DeviceType := dtWaveAudio;
FileName := FileName;
Notify := True; // 啟用 OnNotify
Wait := False; // 非同步
Open;
Play;
end;
end;
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if MediaPlayer1.NotifyValue = nvSuccessful then
ShowMessage('播放完成');
MediaPlayer1.Close;
end;
dtAutoSelect:依副檔名自動判斷dtWaveAudio:.WAVdtMIDISequencer:.MID, .RMIdtAVIVideo:.AVIdtCDAudio:音樂 CD (需音軌)dtVCR:錄影機 (需硬體)dtDAT、dtDigitalVideo、dtOverlay 等專業裝置TMediaPlayer 雖屬封裝層薄的 MCI 包裝器,卻涵蓋了 Windows 多媒體控制的 90% 需求。掌握 DeviceType 正確選擇、TimeFormat 對應位置單位、Notify/Wait 同步策略,即可開發出穩定的播放器、錄音機、CD 控制工具。現代專案若需更豐富編解碼支援,建議改用 DirectShow (DSPACK)、FFmpeg (PasLibVlc) 或 BASS Audio Library。