深入解析 AVI 媒体接收器的开发与实现
1. 测试 AVI 接收器
要测试 AVI 接收器,可按以下步骤操作:
1. 在 TopoEdit 中创建一个源。
2. 通过传入其 CLSID {357A0C45 - EAD4 - 4EAC - B088 - 54E2271E7874}
来创建接收器。
3. 将 AVI 文件媒体源的输出流连接到接收器。
4. 点击 TopoEdit 的播放按钮,将数据传输到新文件中。
2. AVI 媒体接收器概述
MF 媒体接收器主要由两个主要组件构成:媒体接收器对象和将数据馈入接收器的各个流对象。每个媒体接收器实现 IMFMediaSink
接口,并公开一个或多个流接收器对象,每个流接收器又实现 IMFStreamSink
接口。这里主要关注实现 IMFMediaSink
接口的 CAviSink
对象,它是驱动接收器行为的核心对象。此外,每个接收器对象还必须公开 IMFClockStateSink
接口,以便客户端控制拓扑的播放。
IMFMediaSink
接口公开了多个方法,主要用于动态发现、添加和移除媒体接收器中的流接收器对象。这些流对象可以通过其 ID 或索引进行寻址,具体方法如下:
| 方法 | 描述 |
| ---- | ---- |
| AddStreamSink()
| 向接收器对象添加一个新的流接收器对象