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個步驟:初始化介面→利用介面中的控制函數使用控制操作→最後釋放介面。