.NET Framework 內建無多媒體庫,但具強大 COM 互操作能力。利用微軟 DirectShow 技術(整合於 DirectX),可輕鬆實現音視頻播放。
Interop.QuartzTypeLib.dll(DirectX COM 互操作組件)。FilgraphManager 類別渲染媒體檔案,並透過介面轉型取得播放控制介面:public void RenderMedia(string mediaFileName) {
clearUp();
try {
objMedia = new FilgraphManager();
objMedia.RenderFile(mediaFileName);
volMedia = objMedia as IBasicAudio;
posMedia = objMedia as IMediaPosition;
ctlMedia = objMedia as IMediaControl;
eexMedia = objMedia as IMediaEventEx;
eexMedia.SetNotifyWindow((int)this.Handle, WM_GRAPHNOTIFY, 0);
mediaStatus = 1;
mediaDuration = posMedia.Duration;
volMedia.Volume = mediaVolum;
Play();
} catch {
MessageBox.Show("載入檔案失敗!");
clearUp();
}
}
IBasicAudio:音量控制。IMediaPosition:進度/時間控制。IMediaControl:播放/暫停/停止。IMediaEventEx:事件通知(如播放完成)。透過 SetNotifyWindow 將圖形事件導向視窗程序,即可在 WndProc 中處理 WM_GRAPHNOTIFY 實現自動循環、錯誤處理等進階功能。