DirectShow組件在“C:WINDOWSsystem32”目錄下的Quartz.dll動態庫中,要使C#代碼引用COM對象和接口,必須將COM類型庫轉換為.NET框架元數據,從而有效地創建一個可以從任何托管語言調用的托管包裝。在轉換過程中需要使用FrameWork SDK自帶的TlbImp命令工具,該命令工具在“D:Program FilesMicrosoft Visual Studio 8SDKv2.0BinTlbImp.exe”目錄下(取決於Visual Studio 2005的安裝路徑)。該命令的使用方法為:
TlbImp C:WINDOWSsystem32quartz.dll out:C:WINDOWSsystem32quartzDriectShow.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個步驟:初始化接口→利用接口中的控制函數使用控制操作→最後釋放接口。