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