Media Foundation
Media Foundation是微軟在Windows上推出的下一代多媒體開發庫,目的是為Windows平台提供統一的多媒體影音解決方案,開發者可以透過Media Foundation播放影片和聲音檔案、進行影音編碼或者多媒體檔案轉碼等等工作。Media Foundation是DirectShow為主的舊式多媒體應用程式介面的替代者與繼承者,在微軟的計劃下將逐步汰換DirectShow技術。Media Foundation僅支援Windows Vista或更新的系統。
Media Foundation擅長高質素的音頻和視像播放,高清內容(如HDTV,高清電視)和數碼版權管理(DRM)訪問控制。Media Foundation在不同的Windows版本上能力不同,在Windows Vista上僅支援WMV格式,但到了Windows 7後添加了H264編碼支援。Windows 8上則多了數種更高質素的設置。
架構
Media Foundation(以下簡稱MF)架構分為控制層(Control layer),核心層(Core layer)與平台層(Platform layer)。大部分MF功能均由核心層提供,開發者則由控制層來控制行為。一般開發者僅須了解控制層與核心層,幾乎不須接觸平台層。
Media Foundation提供了兩種編程模型,第一種是以Media Session為主的媒體管道模型(Media pipeline)。但是媒體管道模型太過複雜,且曝露過多底層細節,故微軟於Windows 7上推出第二種編成模型,內含SinkWriter、SourceReader、以及Transcode API三部分,大大簡化了MF的使用難度。
媒體管道(pipeline)分三個組成部分:媒體來源(Media Source),媒體接收器(Media Sink)和媒體平台變換(Media Foundation Transforms)。
媒體平台變換
媒體平台變換(Media Foundation Transforms)推出了一個革新式的技術DirectX Media Objects(DMOs)。混合DMO的/ MFT的對象也可以創建。應用程式可以使用MFTs內的管道,或直接使用它們作為獨立的對象。其種類如下:
- 音頻和視像編解碼器
- 音頻和視像效果
- Multiplexers和demultiplexers
- Tees
- 色彩空間轉換器
- Sample-rate converters
- 視像定標器(Video scalers)
微軟建議開發人員編寫MFTs,取代DirectShow篩選器[1]。
增強型視像渲染器
Media Foundation使用Enhanced Video Renderer(EVR)作為渲染器。它可以組合多達16個同步流(simultaneous streams),第一流是一個參考流(reference stream)。
與DirectShow比較
MF有以下好處:
- 可延伸的高清晰度內容和數碼版權管理保護(DRM-protected)的內容。
- 允許DirectX視像加速用於之外DirectShow的基礎設施。支援DXVA 2.0。
- MF的可延伸性(extensibility),使不同的內容保護系統一起運作。
- 使用多媒體類別計劃程式服務(MMCSS),是一個新的系統服務在Windows Vista。
而MF支援的視像格式較DirectShow有限是其缺點。[2]。
應用支援
Media Foundation首次適用於Windows Vista,可見諸於media playback applications.
註釋
- ^ Migrating from DirectShow to Media Foundation and comparison of the two. [2009-08-27]. (原始內容存檔於2008-04-09).
- ^ Supported Media Formats in Media Foundation. [2015-04-22]. (原始內容存檔於2017-02-16).
外部連結
- Microsoft Media Foundation SDK
- Media Foundation Development Forum
- Media Source Metadata (頁面存檔備份,存於互聯網檔案館)
- Media Foundation Pipeline (頁面存檔備份,存於互聯網檔案館)
- Media Foundation Architecture (頁面存檔備份,存於互聯網檔案館)
- About the Media Session (頁面存檔備份,存於互聯網檔案館)
- About the Media Foundation SDK (頁面存檔備份,存於互聯網檔案館)
- Enhanced Video Renderer