媒体基础体系结构概述

本主题介绍 Microsoft 媒体基础的一般设计。 有关使用 Media Foundation 执行特定编程任务的信息,请参阅 Media Foundation 编程指南

下图显示了媒体基础体系结构的高级视图。

显示媒体基础体系结构的高级视图的示意图。

媒体基础提供两种不同的编程模型。 图左侧显示的第一个模型使用媒体数据的端到端管道。 应用程序初始化管道(例如,通过提供要播放的文件的 URL),然后调用方法来控制流式处理。 在关系图右侧显示的第二个模型中,应用程序从源拉取数据,或将数据推送到目标 (或两者都) 。 如果需要处理数据,此模型特别有用,因为应用程序可以直接访问数据流。

基元和平台

从关系图底部开始, 基元 是在整个媒体基础 API 中使用的帮助程序对象:

  • 特性 是一种将信息作为键/值对列表存储在对象内的通用方法。
  • 媒体类型 描述媒体数据流的格式。
  • 媒体缓冲区 保存媒体数据块(如视频帧和音频样本),用于在对象之间传输数据。
  • 媒体示例 是媒体缓冲区的容器。 它们还包含有关缓冲区的元数据,例如时间戳。

Media Foundation 平台 API 提供媒体基础管道使用的一些核心功能,例如异步回调和工作队列。 某些应用程序可能需要直接调用这些 API;此外,如果为媒体基础实现自定义源、转换或接收器,则需要它们。

媒体管道

媒体管道包含生成或处理媒体数据的三种类型的对象:

  • 媒体源将数据 引入管道。 媒体源可能从本地文件(如视频文件)获取数据;从网络流;或从硬件捕获设备。
  • 媒体基础转换 (MRT) 处理流中的数据。 编码器和解码器以 MRT 的形式实现。
  • 媒体接收器 使用数据;例如,通过在显示器上显示视频、播放音频或将数据写入媒体文件。

第三方可以实现自己的自定义源、接收器和 MCT;例如,若要支持新的媒体文件格式,则为 。

媒体会话控制通过管道的数据流,并处理质量控制、音频/视频同步和响应格式更改等任务。

源读取器和接收器编写器

源读取器和接收器编写器提供了一种使用基本媒体基础组件的替代方法, (媒体源、转换和媒体接收器) 。 源读取器托管媒体源和零个或多个解码器,而接收器编写器托管媒体接收器和零个或多个编码器。 可以使用源读取器从媒体源获取压缩或未压缩的数据,并使用接收器编写器对数据进行编码并将数据发送到媒体接收器。

注意

源读取器和接收器编写器在 Windows 7 中可用。

 

此编程模型使应用程序能够更好地控制数据流,还允许应用程序直接访问源中的数据。

Media Foundation:基本概念

Media Foundation 体系结构