C#实现DirectShow技术开发准备
DirectShow组件在“C:\WINDOWS\system32”目录下的Quartz.dll动态库中,要使C#代码引用COM对象和接口,必须将COM类型库转换为.NET框架元数据,从而有效地创建一个可以从任何托管语言调用的托管包装。在转换过程中需要使用FrameWork SDK自带的TlbImp命令工具,该命令工具在“D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\TlbImp.exe”目录下(取决于Visual Studio 2005的安装路径)。该命令的使用方法为:
TlbImp C:\WINDOWS\system32\quartz.dll out:C:\WINDOWS\system32\quartzDriectShow.dll
在DOS命令下执行转换成功。
转换完成后需在应用程序引用quartzDriectShow,引用quartzDriectShow.dll组件步骤如下:
(1)在Visual Studio 2005开发环境中,选择菜单“项目”/“添加引用”命令,弹出“添加引用”对话框。
(2)选择“浏览”选项卡,通过浏览找到引用quartzDriectShow.dll所在的位置,并引用到程序中来。
(3)最后引入using quartzDriectShow,在程序中可以开发相关多媒体程序了。
开发人员还可以通过编写自己的过滤器扩展DirectShow多媒体支持。下面是DirectShow组件的接口。
IFilterGraph:过滤通道接口。
IFilterGraph2:增强的IfilterGraph。
IGraphBuilder:最为重用的COM接口,用于手动或者自动构造过滤通道Filter Graph Manager。
IMediaControl:用来控制流媒体(如流的启动和停止暂停等)播放控制接口。
IMediaEvent:播放事件接口,该接口在FilterGraph发生一些事件时用来创建事件的标志信息并传送给应用程序。
IMediaEventEx:扩展播放事件窗口。
IMediaPosition:播放的位置和速度控制接口(控制播放放置只能为设置时间控制方式)。
IMediaSeeking:另一个播放的位置和播放速度控制接口,在位置选择方面功能较强,设置播放格式。常用的控制播放方式有:TIME_FORMAT_MEDIA_TIME单位100纳秒;TIME_FORMAT_FRAME按帧播放。
IBasicAudio:声音控制接口。
IBasic Video:图像控制接口(波特率,宽度,长度等信息)。
IVideoWindow:显示窗口控制接口(有关播放窗口的一切控制,包括caption显示,窗口位置控制等)。
ISampleGrabber:捕获图像接口(可用于抓图控制)。
IVideoFrameStep:控帛单帧播放的接口。
注意:使用DirectShow接口编程有3个步骤:初始化接口→利用接口中的控制函数使用控制操作→最后释放接口。