從最新的 Microsoft DirectX SDK 10 中提取的 DirectShow Graph 圖表工具,通過(guò)這個(gè)工具,可以很直觀地看到 Filter Graph 的運(yùn)行及處理流程,方便進(jìn)行程序調(diào)試以及各種音視頻處理。
此漢化版本已完美漢化全部資源和字符串。漢化包中提供了兩個(gè)小工具,請(qǐng)自行選擇是否啟用(用 RegSvr32.exe 注冊(cè)后才有效):
PropPage.dll 注冊(cè)后可以查看屬性頁(yè)。
DirectSpy.dll (已被我破解,無(wú)任何限制) 注冊(cè)后可以查看絕大部分 DirectShow Filter Graph,即使程序沒(méi)有添加到 ROT。
GraphEdit 是一個(gè)用于建立和測(cè)試Filter graph 的可視化工具。在DirectX SDK.中附帶一個(gè)可執(zhí)行程序版本(在SDK目錄中的Bin/DXUtils/graphedt.exe)。你可以快速測(cè)試你建立的Filter graph是否達(dá)到預(yù)期的效果,你也可以查看由另一個(gè)程序建立的Filter graph。
查看到系統(tǒng)中安裝的Filter:
使用GraphEdit,可以查看到系統(tǒng)中所有(正常)安裝的Filter。執(zhí)行菜單命令Graph | Insert Filters…,將彈出一個(gè)如圖的對(duì)話框。
提 示:Filter的注冊(cè)信息通常包括兩部分——COM服務(wù)器信息和Filter描述信息。前者是必需的,它表明了Filter是一個(gè)COM組件;后者不是 必需的,不注冊(cè)也不會(huì)妨礙到Filter功能的實(shí)現(xiàn)。GraphEdit查看不到?jīng)]有注冊(cè)Filter描述信息的Filter。
通常在開(kāi)發(fā) DirectShow應(yīng)用程序時(shí),注冊(cè)在“DirectShow Filters”目錄下的Filter可以通過(guò)指定其CLSID、調(diào)用API函數(shù)CoCreateInstance來(lái)創(chuàng)建。而注冊(cè)在其他目錄(比如 “Audio Capture Sources”、“Audio Compressors”、“Video Capture Sources”、“Video Compressors”等)下的Filter,需要通過(guò)系統(tǒng)枚舉來(lái)創(chuàng)建。
構(gòu)建指定文件播放用的Filter Graph
使用GraphEdit,還可以播放媒體文件。構(gòu)建指定文件播放用的Filter Graph至少有以下4種方法:
(1)執(zhí)行菜單命令File | Render Media File…,在隨后彈出的對(duì)話框中選擇一個(gè)媒體文件。
(2)在文件瀏覽器中直接將要播放的媒體文件拖到GraphEdit中。
(3) 執(zhí)行菜單命令Graph | Insert Filters…,在“DirectShow Filters”目錄下找到“File Source (Async.)”這個(gè)Filter并雙擊插入,在隨后彈出的對(duì)話框中選擇一個(gè)媒體文件,然后再在Source Filter的輸出Pin上執(zhí)行鼠標(biāo)右鍵菜單項(xiàng)“Render Pin”。
(4)與方法(3)類(lèi)似,預(yù)先插入所有需要的Filter;連接時(shí),在 上一級(jí)Filter的輸出Pin上按下鼠標(biāo)左鍵并按住不放,拖動(dòng)鼠標(biāo)到下一級(jí)Filter的輸入Pin上后放開(kāi);這樣依次連接所有必要的Pin即可。(連 接的順序一般總是從左到右,即從Source Filter連到Renderer Filter。)
構(gòu)建的Filter Graph典型如圖。
當(dāng)Filter Graph構(gòu)建完成后,就可以進(jìn)行播放了。執(zhí)行菜單命令Graph | Play或Pause或Stop;或者直接使用工具條上的播放控制按鈕。
用GraphEdit顯示應(yīng)用程序中構(gòu)建的Filter Graph
GraphEdit的這個(gè)遠(yuǎn)程連接功能僅在Windows 2000和Windows XP操作系統(tǒng)下能用。