配置 ASF 编写器
创建 WM ASF 编写器 筛选器时,会自动使用WMProfile_V80_256Video配置文件对其进行配置。 此配置文件使用Windows媒体音频和Windows媒体视频版本 8 编解码器,这些编解码器不如Windows媒体 9 系列编解码器。 建议创建使用Windows媒体 9 系列编解码器的自定义配置文件,并使用自定义配置文件配置 WM ASF 编写器,如配置配置文件和其他 ASF 文件属性中所述。 在配置筛选器之前,必须将 WM ASF 编写器筛选器添加到筛选器图,并在将筛选器连接到任何其他筛选器之前对其进行配置。
所有输入数据都必须加时间戳,并且必须在筛选器运行或暂停之前连接所有输入引脚。 因此,如果使用具有音频流和视频流的配置文件配置筛选器,筛选器将创建音频和视频输入引脚,并且必须在筛选器运行之前连接这两个引脚。 由于Windows媒体格式 SDK 需要音频流才能工作,因此 WM ASF 编写器必须始终具有输入音频引脚,即使它适用于虚拟流(即静音低比特率音频流)。
添加数据单元扩展
可以针对数据单元扩展(例如 SMPTE 时间代码)配置配置文件流,只要按照以下操作顺序进行连接,筛选器在连接筛选器之前或之后:
- 使用 IWMStreamConfig2::AddDataUnitExtension 向流添加一个或多个数据单元扩展。
- 调用 IWMProfile::ReconfigStream 以更新配置文件。
- 使用更新的配置文件对象调用 IConfigAsfWriter::ConfigureFilterUsingProfile 。
- 查找视频输入引脚,并调用其 IAMWMBufferPass::SetNotify 方法来注册应用程序定义的 IAMWMBufferPassCallback 接口。
运行图形时,将为每个帧调用 IAMWMBufferPassCallback::Notify 方法,并且你将能够使用其 INSSBuffer3 接口方法获取和设置示例的属性。
注意
在某些处理器密集型方案中,例如反向远程处理,WM ASF 编写器可能需要比某些下游筛选器支持的输出缓冲区更多。 例如,DV 解码器不会接受其输出引脚的多个缓冲区,并且对于某些条件下的 AVI 解压缩器也是如此。 如果在尝试连接到这些筛选器或运行图形时遇到问题,则可能需要编写接受其输出引脚上任意数量的缓冲区的中间筛选器。
相关主题