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組件的接口。
l IFilterGraph:過濾通道接口。
l IFilterGraph2:增強的IfilterGraph。
l IGraphBuilder:最為重用的COM接口,用於手動或者自動構造過濾通道Filter Graph Manager。
l IMediaControl :用來控制流媒體(如流的啟動和停止暫停等)播放控制接口。
l IMediaEvent:播放事件接口,該接口在FilterGraph發生一些事件時用來創建事件的標志信息並傳送給應用程序。
l IMediaEventEx:擴展播放事件窗口。
l IMediaPosition:播放的位置和速度控制接口(控制播放放置只能為設置時間控制方式)。
l IMediaSeeking:另一個播放的位置和播放速度控制接口,在位置選擇方面功能較強,設置播放格式。常用的控制播放方式有:TIME_FORMAT_MEDIA_TIME單位100納秒;TIME_FORMAT_FRAME按幀播放。
l IBasicAudio:聲音控制接口。
l IBasic Video:圖像控制接口(波特率,寬度,長度等信息)。
l IVideoWindow:顯示窗口控制接口(有關播放窗口的一切控制,包括caption顯示,窗口位置控制等)。
l ISampleGrabber:捕獲圖像接口(可用於抓圖控制)。
l IVideoFrameStep:控帛單幀播放的接口。
注意:使用DirectShow接口編程有3個步驟:初始化接口→利用接口中的控制函數使用控制操作→最後釋放接口。