天天看點

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

 <b>摘要:</b>了解如何在 Microsoft Visual C# .NET 中使用 DirectShow 控件,如何開發一個媒體播放器。按照本文介紹的操作步驟,您可以建立一個簡單 Visual C# 應用程式,用來播放數字音頻和視訊。 

  

<b>簡介</b>

  Microsoft Visual C# 是世界上最流行的程式設計語言,利用 Visual C# 的最新版本 Visual C# .NET,您能夠快速、有效地開發基于 Windows 窗體的應用程式,還可以為嵌入了 Microsoft Windows Media? Player 9 Series ActiveX 控件的應用程式添加新鮮、有趣而又非常實用的功能。

  DirectShow 控件是一個标準的 ActiveX 控件,提供了大量的功能。DirectShow控件提供的功能包括: 

  · 數字媒體檔案和流媒體的進階播放功能。     

  · 使用播放清單的功能。 

  · 播放 DVD 和 CD 的功能。 

  · 通路 Windows Media Player 中的 Media Library(媒體庫)。 

  · 進行中繼資料的功能。 

  · 支援字幕。 

  · 支援多種語言的音頻。 

  · 控制網絡連通性和通路相關統計資訊的功能。 

  下面我們來看看構造這個媒體播放器要達到什麼樣的目标,确定了目标也就确定了代碼量和程式的複雜程度。本文的媒體播放器要達到如下目标:

  · 是一個菜單驅動的簡單AWT應用。 

  · 包含一個“檔案”菜單,檔案菜單包含三個菜單項: 

  · “打開”,用來打開媒體檔案。 

  · “循環”,是播放一次(預設),還是重複播放。 

  · “退出”,退出程式。 

  · 可以在多種平台上運作。 

  · 核心功能通過JMF(Java Media Framework)API實作。

  按照本文介紹的步驟,您将建立一個基于 Windows 窗體的基本應用程式,并在其中嵌入 Player 控件。您建立的示例應用程式具有如下特點: 

  · 建立 DirectShow 控件的一個執行個體。 

  · 利用 Windows Media Player 主互操作程式集提供元件對象模型 (COM) 互操作性。 

  · 允許使用者打開并播放 Windows Media 檔案,尤其是檔案擴充名為 .wma 或 .wmv 的檔案。 

  · 建立供使用者播放、暫停和停止數字媒體内容的傳輸控制按鈕。 

  · 顯示目前數字媒體檔案的标題。 

  · 示範如何使用 Player 對象模型,包括使用屬性、方法和事件的示例。 

  我的這個程式僅僅隻是告訴大家如何用DirectShow 在C#中做一個播放機,

  在這個程式中我們經要解決的一些小問題:

  1.如何從你的磁盤上打開媒體檔案

  2.如何讓工具條上的按鈕起用和禁用

  3.如何設定狀态欄的顯示文字

  4.如何控制時間 

  5.如何使用時間控件的事件

 

  6.如何用DirectShow來播放媒體檔案

  7.如何确定播放狀态等等...

  下圖顯示了您将要建立的應用程式,其中正在播放名為“Melow”的數字音頻檔案,同時呈現了可視化效果。

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

圖 1

  · 本文假設您已經具備一定的 Visual C# 和 Visual Studio.NET 內建開發環境知識。 

<b>準備工作</b><b></b>

  在開始建立應用程式之前,您需要安裝必要的軟體并注冊主互操作程式集 (QuartzTypeLib)。

  這裡簡單介紹DirectShow 接口:

  播放視屏和聲音檔案我們要用到DiectX為我們提供的DirectShow元件.使用這個接口可以讓你友善的播放那些共用的影像和聲音檔案.你要做的僅僅隻是安裝DirectShow接口和使用它的功能函數和配置正确的接口參數而已.

  不幸的是.NET并不正式支援DirectX.是的也許你聽說DirectX9支援是嗎?是的,不過在最終版敲定的那一天還沒來,我們都得不到最好的效果.但無論如何我們還是要用的不是嗎?要不這篇文章得廢棄了.是的,也許你用過VB,對了,就是它,我們正是要用到那個.

  <b>開始項目</b>

  在安裝必要軟體并注冊 QuartzTypeLib之後,您就可以啟動 Visual C#,開始為示例應用程式建立項目。下面我将給大家介紹這一過程的操作步驟。

  <b>建立項目</b>

  按以下步驟建立一個空的項目:

1. 啟動 Visual Studio .NET,然後單擊 New Project(建立項目)。 

  2. 在 Visual C# Projects(Visual C# 項目)檔案夾中單擊 Windows Application(Windows 應用程式),鍵入新項目的名稱(最好為 DirectShow),然後單擊 OK(确定)。 

  Visual C# 使用預設的 Windows 窗體“Form1”建立一個新的項目。 

  3. 這個名稱并沒有特别的意義或用處,是以請在 Properties(屬性)視窗中将窗體名稱更改為 frmPlayMedia,将窗體文本更改為“媒體播放器”。 

  在項目中添加對 DirectShow的引用

  按照以下步驟在項目中添加一個對 DirectShow的引用: 

  1. 打開 Visual Studio 工具箱,然後單擊 Components(元件)顯示該面闆。 

  2. 右擊面闆,然後單擊 Customize Toolbox(自定義工具箱),顯示對話框。 

  3. 在 COM Components(COM 元件)頁籤上,選中 Interop.QuartzTypeLib.dll。(如果 Interop.QuartzTypeLib.dll 由于某種原因未列出,則單擊 Browse [浏覽] 并查找名為 QuartzTypeLib.dll的檔案。) 

  4. 單擊 OK(确定)關閉對話框。

圖 2

  要在代碼中使用 DirectShow,您需要添加一行代碼,以引用 DirectShow命名空間。在窗體代碼視窗的頂部,将以下代碼添加到所有聲明語句之前:

using QuartzTypeLib;

  using語句必須在所有 Options 語句(本項目中并未使用)之後,并且在所有其他代碼之前。添加該語句後。

繼續閱讀