本文简单介绍如何使用Microsoft DirectShow SDK对采集卡设备进行音视频采集并压缩生成ASF文件的方法。
在 SDK V1.0.0.6250版本之后的示例代码中会包含DShowPreview例程,位于 XI_SDK\Source\DShowPreview目录下,这个例程主要展示了使用 DirectShow 进行音视频采集、预览、WMV压缩、生成ASF文件的全过程,以下对代码中一些需要注意的地方进行说明,具体内容请查阅示例代码。

程序使用“WM ASF Writer Filter”进行音视频压缩和 ASF 文件生成,使用“Video Mixer Render 9”进行视频预览,使用“Infinite Pin Tee Filter”对视频流进行复用处理。
DShowPreview 在打开视频采集设备后使用 IAMStreamConfig 接口对其采集格式进行了重新设置,设置的色彩空间为 YUY2 格式 (即YUYV格式)。
在添加完音频采集设备后,使用 IAMBufferNegotiation 接口重新设置音频采集缓冲区,以避免录制生成的ASF文件出现音视频不同步现象,具体可参阅“录制视频时画面出现间断性停顿的解决方法”一文。
添加“WM Asf Writer Filter”后使用 IWMProfile对其音视频压缩格式进行设置,程序中使用的视频压缩格式和采集设备的采集格式一致,视频压缩器使用的是 WMV3 压缩器,视频压缩的算法复杂度为1,画面质量为30,音频压缩器使用的是 WMAudioV8 压缩器。