源读取器是使用 媒体会话 和Microsoft媒体基础管道处理媒体数据的替代方法。
为什么使用源读取器?
Media Foundation 提供一个针对播放进行优化的管道。 管道是端到端管道,这意味着它将处理从源(如视频文件)到目标(如图形显示)的数据流。 但是,如果要在管道中读取或修改数据,则必须编写自定义插件。 这需要对媒体基础管道有相当深入的了解。 对于某些任务,创建新插件会产生过多的开销。 如果想要从源获取原始数据,而无需整个管道的开销,则源读取器专为此类情况而设计。
在内部,源读取器持有指向媒体源的指针。 媒体源 是媒体基础对象,它从外部源(例如媒体文件或视频捕获设备)生成媒体数据。 源读取器管理对媒体源的所有方法调用。 (有关媒体源的详细信息,请参阅 媒体源。)
如果媒体源提供压缩的数据,则可以使用源读取器对数据进行解码。 在这种情况下,源读取器将加载正确的解码器并管理媒体源和解码器之间的数据流。 源阅读器还可以执行一些有限的视频处理:从 YUV 到 RGB-32 的颜色转换,以及软件反交错,尽管不建议将这些作用于实时视频呈现。 下图说明了此过程。
源读取器关系图
源读取器不会将数据发送到目标;由应用程序决定使用数据。 例如,源阅读器可以读取视频文件,但它不会将视频呈现到屏幕。 此外,源阅读器不管理演示文稿时钟、处理计时问题或将视频与音频同步。
请考虑在以下情况下使用源读取器:
- 你希望从媒体文件获取数据,而无需担心基础文件结构。
- 你想要从音频或视频捕获设备获取数据。
- 数据处理任务不区分时间,或者不需要演示时钟。
- 你已有一个不基于媒体基础的媒体管道,并且想要将媒体基础媒体源合并到自己的管道中。
在以下情况下,不建议使用源读取器:
- 对于受保护的内容。 源读取器不支持数字权限管理(DRM)。
- 如果关心基础文件结构的详细信息。 源读取器隐藏该类型的详细信息。
在本部分中
主题 | 描述 |
---|---|
使用源读取器处理媒体数据 |
本主题介绍如何使用源读取器处理媒体数据。 |
在异步模式下使用源读取器 |
本主题介绍如何在异步模式下使用源读取器。 |
教程:解码音频 |
本教程演示如何使用源读取器从媒体文件解码音频并将音频写入 WAVE 文件。 |
相关主题