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