摘 要:WMF SDK是微軟Windows Media技術的重要組成部分,它基于COM技術,可以方便地開發具有高性能要求的多媒體應用程序。對WMF SDK關鍵技術作了概括介紹,并給出了采用Visual C++編程語言開發視頻播放器的軟件實現過程。
關鍵詞:WMF SDK;視頻播放器;Visual C++
1 WMF SDK簡介
Windows Media是Microsoft公司開發的流媒體技術,已經成為一個數字媒體的專業平臺。Windows Media Format SDK是一組底層應用程序編程接口 (API),它處理使用 ASF 結構的數據。Windows Media Format SDK 是 Windows Media 的核心,Windows Media Player、Windows Media Encoder 和 Windows Media Services 均使用它來提供核心文件 I/O、聯網和數字版權管理 (DRM) 支持。
2 WMF SDK體系結構
WMF SDK采用了面向對象的設計,是一套完全基于COM組件模型的高級開發包。它引入的生成器,讀取器,編輯器等對象屏蔽了ASF數據格式、網絡傳輸控制等較為底層的流媒體技術實現細節,留下比較上層的編程接口給開發者使用。
Windows Media Format SDK 具有許多處理 ASF 文件的功能,但其核心功能是讀寫文件。本文主要介紹這兩大基本任務體系結構。
2.1 生成器結構
使用 Windows Media Format SDK 構建的應用程序將源媒體樣本傳遞給生成器。生成器使用配置文件對象中指定的設置對文件進行編碼。配置文件對象定義已編碼文件的格式,包括每個流的詳細信息以及應如何處理流的信息。大多數音頻和視頻流由一種 Windows Media 編碼解碼器來處理。但是,編碼管理器首先用一種轉換器來處理數據,為壓縮做準備。當樣本可以放入文件時,先傳遞給多路復用器,多路復用器根據演示時間從所有流中隔行掃描樣本并將數據打包。多路復用器創建的位流被傳送到一個接收器,接收器為最終目的地處理 I/O,不管它是磁盤上的文件還是 Internet 或其他網絡廣播。
2.2 讀取器結構
讀取過程與數據寫入過程基本上相同,不過順序是相反的。讀取器連接到源,源可以是文件、網絡連接或自定義源。拆分器處理文件的數據部分,將數據分成單個流樣本,然后將樣本解壓縮(如果啟用了 DRM 保護),并通過相應的 Windows Media 編碼解碼器來處理。默認情況下,讀取器內部會自動選擇合適的解碼器對ASF流數據進行解壓縮。
3 WMF SDK編程開發環境配置
WMF SDK僅適合C/C++編程語言,開發平臺可以是VC++6.0或Visual Studio.NET.本文介紹VC6.0的設置方法。
打開VC++6.0,選擇菜單命令的Tools→Options,單擊Directories,在Show directories for下拉菜單中選擇 Include files,然后將SDK的安裝路徑放在VC標準路徑之前。
在開發應用程序項目時,對VC6.0 Debug版本還需要如下設置:選擇菜單命令Project中的settings,進入標簽link,在Category下拉列表中選擇General,把winmm.lib和 wmvcore.lib文件添加到Object/library modules中,并選中Ignore all default libraries。
4 流媒體播放器的設計
①用VC++6.0應用程序向導建立一個基于對話框的MFC程序,取名MyMediaPlayer,其它選項都基于默認設置。
②向對話框中添加控件,調整對話框布局。
③在Project菜單中選擇Setting命令,選擇Link選項卡,在Object/Library modules輸入winmm.lib,wmvcore.lib文件,這是編譯使用MCI接口的多媒體程序所必須的。
④在編程時,要添加工程文件wmsdk.h。wmsdk.h定義了SDK中的接口,常量,數據結構,枚舉變量和GUID等。
⑤向該工程的各個成員函數添加代碼。主要有主程序類的初始化函數OnInitDialog(),功能按鈕Open()(打開),OnPlay()(播放)、OnPause()(暫停)、OnStop()(停止)、和GetHeaderAttribute(),RetrieveAttributes()
5 結束語
應用Windows Media Format SDK技術可以快速、穩定地開發具有高性能要求的多媒體程序,是非常行之有效的方法。本文分析了WMF SDK關鍵技術的結構和功能,介紹了SDK開發環境的配置,并采用Visual C++編程語言和SDK技術開發了一個多媒體視頻播放器,實現了較好的視頻播放效果。
參考文獻
[1]李博軒. Visual C + + 多媒體開發指南[M]. 北京:清華大學出版社, 2000.
[2]GEORGE SHEPHERD,SCOT WINGO著, 趙劍云,卿瑾譯. 深入解析MFC[M].北京:中國電力出版社,2003.