程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 利用Visual C#開發一個媒體播放器

利用Visual C#開發一個媒體播放器

編輯:C#入門知識

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

   簡介

  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”的數字音頻文件,同時呈現了可視化效果。


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



  准備工作

  在開始創建應用程序之前,您需要安裝必要的軟件並注冊主互操作程序集 (QuartzTypeLib)。

  這裡簡單介紹DirectShow 接口:

  播放視屏和聲音文件我們要用到DiectX為我們提供的DirectShow組件.使用這個接口可以讓你方便的播放那些共用的影像和聲音文件.你要做的僅僅只是安裝DirectShow接口和使用它的功能函數和配置正確的接口參數而已.

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

  開始項目

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

  創建項目

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

  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 語句(本項目中並未使用)之後,並且在所有其他代碼之前。添加該語句後。


  開發應用程序

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

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

  2. 在窗體上增加文件、播放、信息等菜單。

  3. 在工具箱的 Windows Forms(Windows 窗體)面板中,為您的窗體添加一個工具欄、一個狀態欄和圖片imageList。

  4. 在 Properties(屬性)窗口中,將工具欄的名稱更改為 toolBar1,將在Buttons上增加4個按鈕。狀態欄的名稱更改為 statusBar1,並分別增加三個Panel。

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

  6. 增加一個定時器timer1。

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


圖 3
  編寫代碼

  如何打開你想要媒體文件?

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

  還記得嗎"文件 -> 打開..." 是的幾乎每個使用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應用程序可以通過使用Mic

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved