Directshow是微軟公司推出的基于COM組件的多媒體開(kāi)發(fā)包,其主要是通過(guò)filter(過(guò)濾器)的方式進(jìn)行數(shù)據(jù)的傳輸與控制,Directshow是目前在windows上最好的多媒體開(kāi)發(fā)包,其提供音、視頻采集、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)傳輸、音、視頻播放等幾乎囊或所有的流媒體開(kāi)發(fā)的功能,而視頻會(huì)議系統(tǒng)是一個(gè)多媒體實(shí)時(shí)傳輸系統(tǒng),因此Directshow在windows的視頻會(huì)議系統(tǒng)的開(kāi)發(fā)當(dāng)中占有非常重要的作用。下面我們列舉一下Directshow在視頻會(huì)議系統(tǒng)開(kāi)發(fā)當(dāng)中有哪些功能值得我們關(guān)注的。
1、 音、視頻捕捉功能
Directshow主要是通過(guò)capture filter的方式對(duì)音、視頻進(jìn)行捕捉,而這些capture filter都是直接操作硬件設(shè)備,因此其捕捉效率非常高,視頻會(huì)議系統(tǒng)可以利用這些capture filter實(shí)現(xiàn)音、視頻數(shù)據(jù)的高效捕捉。
2、 數(shù)據(jù)播放功能
Direcshow的數(shù)據(jù)播放功能同樣是直接調(diào)用硬件設(shè)備,其效率也非常高,通常我們用到的數(shù)據(jù)播放功能是音頻播放和視頻播放,音頻播放通過(guò)directsound來(lái)實(shí)現(xiàn),而視頻播放通過(guò)video window 或者vm7 、vm9進(jìn)行圖像的重畫(huà)。我們?cè)谥禺?huà)圖像的時(shí)候,一般在圖像幀數(shù)不高的情況下,我們可以采用DBI的方式進(jìn)行重畫(huà),但如果圖像播放幀數(shù)很大,通過(guò)CPU重畫(huà)的方式會(huì)消耗很大的CPU資源,因此我們就需要直接對(duì)顯卡進(jìn)行操作,而不是通過(guò)DBI進(jìn)行重畫(huà)。Directshow提供直接在顯卡上重畫(huà)的函數(shù),我們可以通過(guò)它來(lái)實(shí)現(xiàn)實(shí)時(shí)的圖像重畫(huà)。
3、 格式轉(zhuǎn)換
在多媒體領(lǐng)域里,數(shù)據(jù)有多種不同的格式,特別是一些視頻格式的數(shù)據(jù),其格式的種類非常多,為了保證數(shù)據(jù)的正確性,我們需要對(duì)數(shù)據(jù)的格式進(jìn)行轉(zhuǎn)換,Directshow 的格式轉(zhuǎn)換主要通過(guò)filter來(lái)實(shí)現(xiàn),不同的格式直接的數(shù)據(jù),可以通過(guò)PIN和POUT進(jìn)行數(shù)據(jù)的轉(zhuǎn)換,數(shù)據(jù)的源是從PIN獲取,而轉(zhuǎn)換的目標(biāo)由POUT輸出。
4、 filter Graph
Directshow提供一個(gè)可視化的filter模型圖供開(kāi)發(fā)人員調(diào)試filter,我們開(kāi)發(fā)視頻會(huì)議系統(tǒng)的時(shí)候,可以從捕捉的filter開(kāi)始,然后連接傳傳輸?shù)膄ilter,最后連接播放的filter,這些流程可以通過(guò)filter Graph來(lái)模擬,我們需要把各部分的filter開(kāi)發(fā)出來(lái),就可以直觀地進(jìn)行測(cè)試。
5、 COM組件
Directshow開(kāi)發(fā)的filter都是基于COM的方式,而COM的一次注冊(cè)終身使用的方式,為我們程序的發(fā)布提供了極大的便利。
綜上所述,Directshow多媒體開(kāi)發(fā)包能開(kāi)發(fā)出具有實(shí)時(shí)、高效、便捷的多媒體交互式系統(tǒng),因此在windows的視頻會(huì)議系統(tǒng)的開(kāi)發(fā)當(dāng)中,Directshow是很多開(kāi)發(fā)者的首選開(kāi)發(fā)包。