摘要:隨著社會(huì)經(jīng)濟(jì)的快速發(fā)展,高科技的發(fā)展水平也得到了逐步的提高,由此在一定程度上導(dǎo)致電子游戲、音頻、視頻等多媒體設(shè)施的使用頻率越來越大。截止到目前為止,在Windows環(huán)境下設(shè)計(jì)實(shí)時(shí)音視頻的數(shù)據(jù)采集與傳輸技術(shù)主要有三種方法,即Windows Media、VFW和Direct Show。文章對(duì)實(shí)時(shí)音視頻數(shù)據(jù)采集和傳輸技術(shù)進(jìn)行了探討。
關(guān)鍵詞:多媒體;音視頻;數(shù)據(jù)采集;非線性編輯;多媒體設(shè)施 文獻(xiàn)標(biāo)識(shí)碼:A
中圖分類號(hào):TP311 文章編號(hào):1009-2374(2016)21-0021-02 DOI:10.13535/j.cnki.11-4406/n.2016.21.010
目前,實(shí)時(shí)音視頻的數(shù)據(jù)采集和傳輸技術(shù)應(yīng)用十分廣泛,例如公司里常用的視頻會(huì)議、學(xué)校中常見的遠(yuǎn)程教育、超市里的視頻監(jiān)控、大家常用的視頻通話等。因?yàn)樵诓煌膱?chǎng)合對(duì)于實(shí)時(shí)音視頻數(shù)據(jù)采集和傳輸技術(shù)的要求也有所不同,所以根據(jù)實(shí)際問題選擇合適的技術(shù)設(shè)計(jì)是非常重要的。人們之前使用的采集設(shè)備雖然使用方便,但是由于硬件的相關(guān)性強(qiáng),使用起來會(huì)發(fā)生運(yùn)用不靈活的現(xiàn)象,在一些比較復(fù)雜的場(chǎng)合就不太適合應(yīng)用?,F(xiàn)下使用率最高的就是Windows Media、VFW和Direct Show三種技術(shù)軟件,下面本文就針對(duì)這三種技術(shù)進(jìn)行簡(jiǎn)單的介紹,希望可以為人們更好地使用提供
方法。
1 使用VFW進(jìn)行音視頻數(shù)據(jù)采集
VFW是在1992年由微軟公司推出的一項(xiàng)新的音視頻方面的技術(shù)手段,主要是為了解決當(dāng)時(shí)存在的數(shù)學(xué)音視頻中遇到的問題。VFW的使用極大地方便了音視頻的數(shù)據(jù)采集,不僅可以對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集、編輯和播放的功能,還能開發(fā)其他復(fù)雜的應(yīng)用。
VFW的不同模塊具有不同的功能,其中最常用的就是VFW中的AVICAP模塊,它可以用來實(shí)現(xiàn)視頻捕捉的功能。首先,我們要在應(yīng)用程序中創(chuàng)建一個(gè)AVICAP的窗口;其次,可以通過向這個(gè)窗口發(fā)送消息來實(shí)現(xiàn)對(duì)窗口的控制。AVICAP的優(yōu)點(diǎn)是可以對(duì)數(shù)據(jù)實(shí)現(xiàn)全面的捕捉,并將捕捉到的數(shù)據(jù)寫入磁盤中,可以給用戶提供預(yù)覽的功能;缺點(diǎn)是不擅長(zhǎng)使用非文件型的視頻、軟件等,在程序的運(yùn)行過程中,不能通過改編程序?qū)@些視頻、軟件的格式及屬性進(jìn)行更改,而只能像平常一樣,在對(duì)話框里設(shè)置這些格式和屬性。在把音視頻的數(shù)據(jù)轉(zhuǎn)化為文件的時(shí)候,VFW最擅長(zhǎng)的就是對(duì)AVI文件的轉(zhuǎn)換。VFW進(jìn)行音視頻捕捉的過程可以簡(jiǎn)單地概括成:創(chuàng)建需要進(jìn)行捕捉的窗口、對(duì)需要回調(diào)的函數(shù)進(jìn)行注冊(cè)處理、獲得需要捕捉的窗口的設(shè)置功能、設(shè)置參數(shù)等,將這些工作處理完畢后,就要斷開主機(jī)與捕獲設(shè)備的連接,以防數(shù)據(jù)的丟失。VFW還具有對(duì)音視頻數(shù)據(jù)的壓縮和解壓、對(duì)文件信息的更改、控制圖像顯示等主要功能。
現(xiàn)如今,VFW的使用已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足人們的需求,尤其是在微軟已經(jīng)放棄了對(duì)VFW的后續(xù)開發(fā)之后,它在應(yīng)用方面存在的不足也越來越明顯。所以在現(xiàn)在的工程應(yīng)用中,除非我們只有VFW這一個(gè)設(shè)備可以使用或是只是利用VFW就可以完成我們需要處理的工作之外,已經(jīng)很少使用VFW了。替代它在工程中地位的是Direct Show,下面我們就對(duì)Direct Show的性能進(jìn)行簡(jiǎn)單的
介紹。
2 使用Direct Show進(jìn)行音視頻數(shù)據(jù)采集及傳輸
與VFW不同的是,在處理多媒體流的時(shí)候,Direct Show可以完成對(duì)多種格式的文件進(jìn)行讀取和壓縮的工作,不僅支持老的VFW的捕捉設(shè)備,還可以供WDM模式的捕捉設(shè)備工作,無論有沒有硬件加速設(shè)備,Direct Show都可以正常工作。
Direct Show是由很多種Filter組成的,在應(yīng)用程序工作的時(shí)候就需要Direct Show中的Filter支持它的運(yùn)行,不過Filter并沒有限定的條件,程序員可以根據(jù)需要編制不同的Filter。應(yīng)用程序運(yùn)行過程中涉及到的Filter Graph,就是由很多Filter組成的,我們可以將這些Filter根據(jù)用途進(jìn)行分類,大致的分為源Filter、傳輸Filter和渲染Filter三部分。為源Filter提供數(shù)據(jù)的數(shù)據(jù)源來自于文件系統(tǒng),也可以通過互聯(lián)網(wǎng)、采集設(shè)備等獲取,源Filter中的數(shù)據(jù)在經(jīng)過傳輸Filter時(shí)會(huì)得到一些處理,處理后由渲染Filter輸出,數(shù)據(jù)在經(jīng)這三方面的處理后,輸出的就不再是原來的數(shù)據(jù),而是一些聲卡、顯卡或者是文件。
隨著高科技的發(fā)展,視頻采集設(shè)備也得到了逐步的完善。目前,常用的視頻采集的設(shè)備有視頻采集卡、USB攝像頭等,無論是哪種設(shè)備,都可以使用Direct Show進(jìn)行音視頻的處理工作。當(dāng)視頻采集卡不具備對(duì)音頻的信息采集功能時(shí),可以用計(jì)算機(jī)自帶的聲卡替代視頻采集卡的不足。采集到的數(shù)據(jù)可以利用上述所說的辦法進(jìn)行處理,轉(zhuǎn)化原有的格式,得到想要的文件。這種辦法可以將數(shù)據(jù)處理的工作最大限度的簡(jiǎn)單化,不過在對(duì)這些數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸時(shí),卻因?yàn)镈irect Show中沒有相應(yīng)的Filter,而無法進(jìn)行網(wǎng)絡(luò)傳輸。
除了上面所說的三種常用的Filter外,還有一種Filter叫做包裝Filter,它的工作主要是在內(nèi)部完成與硬件的交互工作。其中經(jīng)常使用的是在實(shí)時(shí)音視頻中針對(duì)聲卡和WDM驅(qū)動(dòng)的包裝Filter,而在VFW視頻采集卡只是有時(shí)會(huì)用到。Direct Show還有一個(gè)優(yōu)點(diǎn)就是,由于它自身支持對(duì)內(nèi)核模式下的數(shù)據(jù)傳輸,而減少了數(shù)據(jù)從內(nèi)核到用戶,不同模式間轉(zhuǎn)換的計(jì)算量,避免了不必要的麻煩,提高了工作效率。
實(shí)時(shí)采集到的音視頻數(shù)據(jù)如果在傳輸過程中有特殊的要求,比如需要在IP網(wǎng)絡(luò)上傳輸、對(duì)傳輸?shù)臅r(shí)間有嚴(yán)格的控制等,在這時(shí),就需要程序員靠自身的技能編寫程序,而不能運(yùn)用以往的程序來完成任務(wù)。用于數(shù)據(jù)流的廣播和接收的Filter只在很少的地方能夠直接進(jìn)行應(yīng)用,一般情況下,使用這類的Filter時(shí),需要首先對(duì)其中的Sample進(jìn)行編譯連接,在生成DLL后,利用regsvr32的命令行狀態(tài),對(duì)生成的DLL進(jìn)行注冊(cè),注冊(cè)完成后就可以直接投入使用了。
因?yàn)閷?shí)時(shí)音視頻的信息量大、涉及范圍廣,再加上它自身的實(shí)用性很強(qiáng)的特點(diǎn),導(dǎo)致在TCP網(wǎng)絡(luò)中的通信狀態(tài)不太好,常常會(huì)遇到信號(hào)不良的狀況。為了解決這種問題,就需要在運(yùn)輸層加上RTP和RTCP來保障數(shù)據(jù)傳輸?shù)馁|(zhì)量,這樣無疑會(huì)加大我們的工作量。在這種情況下,使用Direct Show就顯得不太合適,而Windows Media的優(yōu)勢(shì)就凸現(xiàn)出來了。下文對(duì)Windows Media的功能及用途進(jìn)行簡(jiǎn)要的介紹。
3 使用Windows Media進(jìn)行音視頻數(shù)據(jù)采集及傳輸
Windows Media是微軟專門針對(duì)流媒體開發(fā)的一項(xiàng)應(yīng)用,包括Audio、Video、Encoder、Services等主要組成部分。這些主要組成部分各有各的用途,其中Windows Media Encode可以直接對(duì)音視頻中的數(shù)據(jù)進(jìn)行編碼、格式轉(zhuǎn)換等,除此之外,還可以利用Windows Media Encode實(shí)現(xiàn)一些特殊的功能;Windows Media Services主要用做流媒體信息的發(fā)布,常常與微軟公司內(nèi)部的服務(wù)器捆綁在一起,用來獲取流媒體的內(nèi)容,并將其傳播出去。這些Windows Media的組成部分形成了一個(gè)完整的工作系統(tǒng),可以對(duì)實(shí)時(shí)音視頻的數(shù)據(jù)進(jìn)行不同階段的處理工作。為了保證信息傳輸過程中的安全,微軟公司還為此專門開發(fā)了MMS協(xié)議,為網(wǎng)絡(luò)安全提供了很好的QOS保障,對(duì)于需要在網(wǎng)上進(jìn)行傳輸?shù)膶?shí)時(shí)音視頻數(shù)據(jù)而言,相比于前面介紹的兩種方法,Windows Media相對(duì)更安全一些。
Windows Media在構(gòu)建實(shí)時(shí)音視頻數(shù)據(jù)的采集及傳播時(shí),有一個(gè)特定的過程。我們可以將這個(gè)過程簡(jiǎn)單地概括為:運(yùn)行Windows Media Encoder軟件,在資源屬性中選擇相關(guān)設(shè)備的屬性,在Output中選擇目標(biāo)的文件名,在Compression中選擇需要壓縮的文件的格式,在完成這些設(shè)置之后,就可以開始實(shí)施音視頻的數(shù)據(jù)采集了。數(shù)據(jù)采集成功后,在計(jì)算機(jī)中點(diǎn)開Windows Media Player,然后選擇File-Open URL就可以查看已經(jīng)采集到的信息。進(jìn)行屏幕捕捉和進(jìn)行信息采集的步驟有所不同,它是在Source中選擇Video和Screen Capture,然后在下拉菜單中選擇需要捕捉的區(qū)域,在不做特殊選擇的情況下,捕捉到的是整個(gè)屏幕的內(nèi)容,為了方便以后的查看,可以將捕捉的內(nèi)容以文件的格式保存下來。
4 結(jié)語
根據(jù)本文的論述可以知道,在實(shí)施音視頻的數(shù)據(jù)采集過程中使用VFW的情況越來越少,目前替代它的數(shù)據(jù)采集功能的是Direct Show。Direct Show不僅在非線性編輯方面的功能十分強(qiáng)大,而且任何一種設(shè)備和數(shù)據(jù)源都可以利用它實(shí)現(xiàn)數(shù)據(jù)采集的目的。不過在利用網(wǎng)絡(luò)將多媒體的數(shù)據(jù)進(jìn)行流式傳輸方面,Direct Show還存在很多弊端,這時(shí)就需要運(yùn)用Windows Media解決數(shù)據(jù)在網(wǎng)絡(luò)傳輸中遇到的難題,作為微軟專門為此設(shè)計(jì)的一項(xiàng)應(yīng)用,Windows Media在數(shù)據(jù)傳輸?shù)倪^程中,可以更好地保障數(shù)據(jù)的質(zhì)量安全,網(wǎng)絡(luò)協(xié)議與網(wǎng)絡(luò)傳輸方面都為它的數(shù)據(jù)傳輸提供了絕對(duì)的便利,可以收到事半功倍的良好效果。
參考文獻(xiàn)
[1] 張紅林,馬永濤,劉開華.基于LabWindows/CVI的音視頻實(shí)時(shí)采集壓縮系統(tǒng)[J].電視技術(shù),2014,(5).
[2] 范晨.基于嵌入式系統(tǒng)的危險(xiǎn)區(qū)域探測(cè)機(jī)器人數(shù)字音視頻實(shí)時(shí)傳輸系統(tǒng)設(shè)計(jì)[D].山東大學(xué),2010.
[3] 王峰.基于Hi3516的音視頻采集及網(wǎng)絡(luò)傳輸技術(shù)研究[D].西安電子科技大學(xué),2013.
作者簡(jiǎn)介:陸開華(1975-),男(彝族),云南人,云南音像出版社技術(shù)總監(jiān),工程師,研究方向:建筑智能化集成。
(責(zé)任編輯:黃銀芳)