Microsoft Media Foundation官方文档翻译(8)《Overview of the Media Foundation Architecture》

官方英文文档链接:https://docs.microsoft.com/en-us/windows/desktop/medfound/overview-of-the-media-foundation-architecture

基于05/31/2018

 

This topic describes the general design of Microsoft Media Foundation. For information about using Media Foundation for specific programming tasks, see Media Foundation Programming Guide.

下图显示了 Media Foundation 的结构。

diagram showing a high-level view of the media foundation architecture.

Media Foundation 提供了两种不同的模型。第一种是图左边,使用端到端管道(end-to-end pipeline)来处理媒体数据。应用程序 initializes the pipeline,例如,通过提供要播放的文件的URL,然后调用控制 streaming 的方法。在图右侧的第二个模型中,应用程序从源中提取数据,将其推送到目的地。如果您需要处理数据,那么此模型特别有用,因为应用程序可以直接访问数据流。

Primitives and Platform(基本数据结构和平台)

在图底部,那些 Primitives 是在整个 Media Foundation API 中会用到的辅助对象:

  • Attributes 一种在对象内部存储信息的通用方法,是键/值对的列表。
  • Media Types 描述 stream 的格式。
  • Media Buffers hold 媒体数据块,例如视频帧和音频帧,并用于在对象之间传输数据。
  • Media Samples media buffers 的容器。同时包含关于 buffer 的元数据(metadata),例如时间戳。

Media Foundation Platform APIs 提供了 Media Foundation 管道使用的一些核心功能,例如异步回调(asynchronous callbacks)和工作队列(work queues)。某些应用程序可能需要直接调用这些API;此外,如果您需要自己为 Media Foundation 实现源(source),转换(transform)或接收器(sink),则也需要这些 API。

Media Pipeline

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

  • Media Sources 将数据引入管道。媒体源可以从本地文件获取数据,也可以来自网络流,或者来自硬件捕获设备。
  • Media Foundation Transforms (MFTs) 处理流中的数据。编码器和解码器都实现为 MFTs。
  • Media Sinks 使用数据。例如,在显示器上显示视频,播放音频或将数据写入媒体文件。

开发者可以自己实现这三种对象。例如为了支持新的媒体格式。

Media Session 控制着 pipeline 中的数据流,并处理 例如质量控制,音频/视频同步和响应格式更改等 任务。

Source Reader and Sink Writer

Source ReaderSink Writer 提供了另一种方式去使用基本的 Media Foundation 组件(media sources, transforms, and media sinks)。source reader 托管 media source 和零个或多个解码器,而 sink writer 托管 media sink 和零个或多个编码器。你可以用 source reader 从 media source 中获取压缩过或未压缩的数据,然后用 sink writer 对数据进行编码并将数据发送到 media sink。

注意

source reader 和 sink writer 在 Windows 7 中可用。(win7以上?)

 

该编程模型可以使应用程序更好地控制数据流,并使应用程序可以直接访问源数据。

posted @ 2019-04-21 20:25  CaliforniaCHAO  阅读(520)  评论(0编辑  收藏  举报