Media Foundation架构简介

Media Foundation架构简介

如下图所示:MF提供了两套编程模型,分别是:

1,图中左边部分,用一个端到端的流水线。程序通过提供一个URL来初始化流水线,然后调用控制流的函数。

2,图中右边部分,程序既从源中抽数据,也将数据推送到目标中,这种模型在处理音视频数据时很有用,因为程序可以直接访问数据流。


从底依次往上说:

primitives 是一些贯穿于整个MF API的辅助对象,包括:

  • Attributes,即“属性”。一般用于在对象中存储信息,存储方式是键值对。
  • Media Types,即“媒体类型”。用于描述数据流的格式。
  • Buffers,即“缓冲区”。用于保存大块的媒体数据,例如视频帧和音频采样,也可以用于在两个对象间传输数据。
  • Samples,即“采样”。是Buffer的容器,也包含Buffer的元数据,比如时间戳。
Media Foundation Platform提供了一些用于流水线的核心功能,例如异步回调和工作队列。某些程序可能需要直接地调用这些API,比如你需要自定义媒体数据源,格式转换,或者sink(槽)。

--1,图中左边部分,用一个端到端的流水线。程序通过提供一个URL来初始化流水线,然后调用控制流的函数。

Media Pipeline,流水线包含3种类型的对象,它们生成或处理媒体数据,分别是:
  • Media Sources,即数据源。将数据引入流水线,数据源可能是本地文件,例如视频文件,也可能是网络上的流,或者来自于摄像头。
  • Media Foundation Transfroms(MFTs),即数据转换器。从一个流中处理数据,编码器和解码器都是MFTs。
  • Media Sinks,即槽。消费数据,例如显示视频,播放声音,或者将数据写入文件。
第3方可以实现自己的Sources,Transforms,Sinks。例如用来支持新的文件格式。

Media Session,控制数据流,处理一些诸如质量控制,音视频同步的任务,以及响应格式的变化。

--2,图中右边部分,程序既从源中抽数据,也将数据推送到目标中,这种模型在处理音视频数据时很有用,因为程序可以直接访问数据流。

Source Reader 和 Sink Writer,是另一种处理Sources,Transforms,Sinks这3个对象的方式中需要用到的组件。Source Reader中有一个数据源和一些解码器(也可能没有解码器),而Sink Writer中有一个Sink和一些编码器(也可能没有编码器)。你可以使用Source Reader从数据源得到压缩或未压缩的数据,然后用Sink Writer将数据编码然后发送至Media Sink。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值