天天看點

如何通過C#開發一個媒體播放器(中)

 <b>開發應用程式</b>

  建立通過 PIA 與 Framework 連接配接的 Player 控件執行個體之後,您可以向窗體中添加所需的其他元素,并編寫完成實際操作的代碼。

添加 Windows 窗體控件

  1. 在 View(視圖)菜單中,單擊 Designer(設計器),或者單擊 Solution Explorer(解決方案資料總管)中的 View Designer(視圖設計器)按鈕,切換到窗體設計器。 

  2. 在窗體上增加檔案、播放、資訊等菜單。

  3. 在工具箱的 Windows Forms(Windows 窗體)面闆中,為您的窗體添加一個工具欄、一個狀态欄和圖檔p_w_picpathList。 

  4. 在 Properties(屬性)視窗中,将工具欄的名稱更改為 toolBar1,将在Buttons上增加4個按鈕。狀态欄的名稱更改為 statusBar1,并分别增加三個Panel。 

  5. 在工具箱的面闆中,為您的窗體添加一個面版panel1。

  6. 增加一個定時器timer1。

  7. 調整控件在窗體中的排列方式,使之符合您的需要而且友善使用者使用。下圖為 Visual Studio Designer(設計器)中完成後的窗體布局。

如何通過C#開發一個媒體播放器(中)

圖 3

  <b>編寫代碼</b>

  如何打開你想要媒體檔案?

  第一步是編寫在 frmPlayMedia中打開 Windows Media 檔案的代碼。要自動切換到 Code(代碼)視圖并編輯打開菜單的 Click 事件處理程式 (menuItem2_Click) 的代碼,請輕按兩下窗體上的“工具欄”按鈕。将以下代碼添加到事件處理程式中:

  還記得嗎"檔案 -&gt; 打開..." 是的幾乎每個使用windows的人都會這樣操作.如何實作?

  很簡單看看下面的代碼:

OpenFileDialog openFileDialog = new OpenFileDialog();

openFileDialog.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*";

if (DialogResult.OK == openFileDialog.ShowDialog())

{

….

}

  看吧很簡單是嗎?記得寫一個函數把它放進去。當你點選OK按鈕的時候,DirectShow接口就會得到你想要播放的檔案。下圖解釋了它是如何工作的。

  DirectShow為多媒體流回放提供最基本的服務,這些多媒體流可以是本地檔案,還可以是伺服器傳輸過來的。特别的,DirectShow可以支援視訊回放,支援以不同的檔案和流格式壓縮視訊内容,包括Windows Media、MPEG、AVI和WAV。 

  在DirectShow的核心處,服務是元件的子產品化集合,稱為過濾器,可以根據媒體類型排列成過濾器圖。過濾器可以操作資料流,如讀入、分析、解碼、格式化或渲染。

過濾器以樹型進行排列,這棵樹稱為過濾器樹,通過過濾器樹管理器(Filter Graph Manager,簡稱FGM)進行管理。使用FGM應用程式可以通過使用Microsoft Windows Media Player控件間接控制過濾器樹,還可以通過調用COM接口方法直接控制。DirectShow過濾器樹(參閱圖1)由從源到目标渲染器的有向過濾器序列組成,所有這些通過輸入和輸出過濾器引腳連接配接。過濾器引腳協商它們将支援哪些媒體類型。FGM控制樹過濾器之間的多媒體資料流。因為DirectShow有一個靈活的、可重配置的過濾器樹體系結構,是以DirectShow可以使用同樣的軟體成分支援多種媒體類型的回放和分流。開發人員還可以通過編寫自己的過濾器擴充DirectShow多媒體支援。 

  <b>過濾器</b> 

  過濾器是注冊的DirectShow類,它執行許多媒體資訊處理任務。這些任務包括: 

   獲得源資訊(例如,獲得媒體流) 

   分析(例如,在流上執行包讀入、分離和格式化) 

   轉換(例如,解碼WMA和MPEG-4音頻和視訊流) 

   渲染(例如,在适當的時候産生音頻PCM或者視訊RGB/YUV輸出,将資料傳給DirectSound和DirectDraw) 

  過濾器使用幾種類型的接口,例如引腳、計數器、傳送器和時鐘接口,來執行它們的任務。過濾器實作和開放了許多接口。FGM可以使用這些接口建立、連接配接和控制樹。過濾器經常實作包含下列方法的IBaseFilter接口: 

   運作、停止和暫停過濾器狀态。 

   恢複過濾器和廠商資訊。 

   得到和設定參考時鐘。 

   恢複過濾器狀态資訊。 

   枚舉過濾器引線。 

   重建過濾器樹時定位引腳

  使用者單擊“打開”時,這段代碼将顯示一個對話框,供使用者在計算機上浏覽并選擇要播放的 .wma 或.wmv 檔案。使用者選擇檔案(并單擊“确定”)時,代碼将 Player 的 URL 屬性設定為使用者選擇的檔案。由于 Player 的 autoStart 屬性在預設情況下設定為 True,是以 Player 立即打開并播放使用者選擇的數字媒體檔案。

繼續閱讀