視頻數(shù)據(jù)采集軟件論文
時(shí)間:2022-08-02 03:24:00
導(dǎo)語:視頻數(shù)據(jù)采集軟件論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
【摘要】介紹了視頻數(shù)據(jù)的采集、多路視頻數(shù)據(jù)間的切換、視頻數(shù)據(jù)的保存及基于C/S結(jié)構(gòu)的實(shí)時(shí)視頻數(shù)據(jù)傳輸與顯示,在對(duì)四路飛行視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)采集的運(yùn)行時(shí),各項(xiàng)需求已達(dá)到要求
多路視頻數(shù)據(jù)實(shí)時(shí)采集的軟件實(shí)現(xiàn)
常永亮(飛行試驗(yàn)研究院測(cè)試所陜西西安710089)
【摘要】介紹了視頻數(shù)據(jù)的采集、多路視頻數(shù)據(jù)間的切換、視頻數(shù)據(jù)的保存及基于C/S結(jié)構(gòu)的實(shí)時(shí)視頻數(shù)據(jù)傳輸與顯示,在對(duì)四路飛行視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)采集的運(yùn)行時(shí),各項(xiàng)需求已達(dá)到要求。
【關(guān)鍵詞】視頻數(shù)據(jù)、Divx編碼、RTP/RTCP協(xié)議、TCP/UDP協(xié)議、媒體流、幀
1引言
隨著信息技術(shù)的不斷發(fā)展,人們將計(jì)算機(jī)技術(shù)引入視頻采集、視頻處理領(lǐng)域,用計(jì)算機(jī)處理視頻信息和用數(shù)字傳輸視頻數(shù)據(jù)在很多領(lǐng)域已有廣泛的應(yīng)用,在我們的飛機(jī)試飛中也被大量的應(yīng)用。
視頻圖像采集的方法較多,基本可分為2大類:數(shù)字信號(hào)采集和模擬信號(hào)采集。前者采用圖像采集芯片組完成圖像的采集、幀存儲(chǔ)器地址生成以及圖像數(shù)據(jù)的刷新;除了要對(duì)采集模式進(jìn)行設(shè)定外,主處理器不參與采集過程,我們只要在相應(yīng)的幀存儲(chǔ)器地址取出采集到的視頻數(shù)據(jù)即可得到相應(yīng)的視頻數(shù)據(jù),這種方法,無論在功能、性能、可靠性、速度等各方面都得到了顯著的提高,但成本高。后者采用通用視頻A/D轉(zhuǎn)換器實(shí)現(xiàn)圖像的采集,其特點(diǎn)是數(shù)據(jù)采集占用CPU的時(shí)間,對(duì)處理器的速度要求高,成本低、易于實(shí)現(xiàn),能夠滿足某些圖像采集系統(tǒng)的需要。
此系統(tǒng)要求每秒采最大25幀(設(shè)為可調(diào)),客戶端實(shí)時(shí)顯示最大25幀(設(shè)為可調(diào)),保存為MPEG4格式,畫面要求為最大分辯率為1024X768。
多路視頻實(shí)時(shí)采集使用的是VisionRGB-PRO卡(英國Datapath公司),此卡可同時(shí)實(shí)時(shí)采集兩路視頻數(shù)據(jù),基本達(dá)到了本系統(tǒng)的要求,再用一臺(tái)VGA矩陣切換器將前端數(shù)據(jù)源的四路視頻數(shù)據(jù)進(jìn)行人為切換采集。
2硬件環(huán)境的構(gòu)建(硬件框架)
圖一系統(tǒng)硬件框架圖
上圖為整個(gè)采集系統(tǒng)的硬件框架。
此采集系統(tǒng)主要實(shí)現(xiàn)對(duì)前端四路視頻數(shù)據(jù)的人為切換式實(shí)時(shí)采集,在服務(wù)器端可同時(shí)采集和儲(chǔ)存兩路視頻數(shù)據(jù)(在此只用一個(gè)視頻采集卡),也可以一次只采集一路視頻數(shù)據(jù),再經(jīng)網(wǎng)絡(luò)實(shí)時(shí)傳輸?shù)娇蛻舳孙@示,服務(wù)器端也實(shí)時(shí)顯示所采集的視頻。
在進(jìn)行視頻切換方面可在服務(wù)器端或客戶端自行切換,在服務(wù)器端可通過串行口操作VGA矩陣切換進(jìn)行相應(yīng)的視頻輸入輸出口的切換,在客戶端可通過網(wǎng)絡(luò)-服務(wù)器程序相應(yīng)模塊-串行口-VGA矩陣切換進(jìn)行相應(yīng)的視頻輸入輸出口的切換。
3軟件實(shí)現(xiàn)概述
3.1服務(wù)器端的實(shí)現(xiàn)
圖二服務(wù)器端程序流程圖
上圖為服務(wù)器端實(shí)時(shí)采集視頻的程序流程圖。視頻數(shù)據(jù)量較大,這就要求視頻數(shù)據(jù)處理系統(tǒng)具有實(shí)時(shí)采集,大容量存儲(chǔ)和實(shí)時(shí)處理的特點(diǎn)。在服務(wù)器端的實(shí)現(xiàn)是整個(gè)系統(tǒng)的關(guān)鍵,在此也承擔(dān)了大量的工作,因此對(duì)軟件和硬件方面要求也很高就成為必然。
軟件要實(shí)現(xiàn)對(duì)視頻數(shù)據(jù)的實(shí)時(shí)采集(最多兩路)、控制視頻接口、把視頻數(shù)據(jù)實(shí)時(shí)編碼保存并發(fā)送到多個(gè)客戶端。以上就是要在服務(wù)器上實(shí)現(xiàn)的主要功能。
在采集方面最主要的是要有實(shí)時(shí)性,在此以事件驅(qū)動(dòng)的方法從端口獲取數(shù)據(jù),采集到視頻數(shù)據(jù)流在桌面顯示的同時(shí)再編碼保存,視頻采集的數(shù)據(jù)要經(jīng)軟件的相應(yīng)模塊將其設(shè)為位圖型式的視頻幀,以利于在服務(wù)器端的顯示和編碼保存,在此采用Divx編碼,Divx編碼后形成以幀為格式的MPEG4流。Divx解碼也是以幀的格式解壓,因此有利于向客戶端發(fā)送數(shù)據(jù)時(shí)以幀為單位發(fā)送視頻數(shù)據(jù)流。
此處用到Divx編碼就不得不把Divx編碼作簡(jiǎn)要的介紹。
DivX由DivXNetworks公司開發(fā)的,即為我們通常所說的DVDrip格式,它采用了MPEG4的壓縮算法同時(shí)又綜合了MPEG-4與MP3各方面的技術(shù),也就是使用DivX壓縮技術(shù)對(duì)DVD盤片的視頻圖像進(jìn)行高質(zhì)量壓縮,同時(shí)用MP3或AC3對(duì)音頻進(jìn)行壓縮,然后再將視頻與音頻合成并加上相應(yīng)的外掛字幕文件而形成的視頻格式。其畫質(zhì)直逼DVD并且體積只有DVD的數(shù)分之一。這種編碼對(duì)機(jī)器的要求也不高,所以DivX視頻編碼技術(shù)可以說是一種對(duì)DVD造成威脅最大的新生視頻壓縮格式,實(shí)際上Divx=(視頻)MPEG4+(音頻)MP3。
媒體流分為四個(gè)流:視頻流、音頻流、文本流、MIDI流,用視頻卡采集的是兩路視頻流,保存時(shí)每路視頻流多加了一個(gè)文本流,文本流主要應(yīng)客戶要求加入的服務(wù)器時(shí)間和一些人為輸入的文本信息,在記錄兩個(gè)媒體流時(shí)一般有兩種記錄方法,在此采用的是將視頻流和文本流記到一個(gè)文件中的方式,這樣有利于文件以后的保存和查閱。
在采集軟件實(shí)現(xiàn)方面主要應(yīng)用了相應(yīng)的SDK(Softwaredevelopmentkit)和API(應(yīng)用編程接口),還可用VFW(VideoforWindows)。但后一種方法實(shí)現(xiàn)簡(jiǎn)單單路視頻采集卡可以,對(duì)于多路視頻的采集用第一種方法更加靈活,但實(shí)現(xiàn)比第二種復(fù)雜的多。在服務(wù)器實(shí)現(xiàn)軟件方面主要有以下幾大塊:一是采集;二是保存;三是向客戶端發(fā)送;四是串口的通行;五圖像的形成;六是桌面顯示;七是對(duì)圖像亮度、顏色、位置等的調(diào)整;采集通道、采樣率、采集時(shí)間的選擇;等等。
在服務(wù)器端各方面協(xié)調(diào)工作是關(guān)鍵,程序啟動(dòng)首先默認(rèn)上次設(shè)定的視頻采集卡通道,如有視頻數(shù)據(jù)就顯示、保存,如果沒有視頻數(shù)據(jù)就等待,如果要調(diào)整視頻采集卡通道可用串口給VGA矩陣切換器發(fā)送相應(yīng)的命令讓VGA矩陣切換器進(jìn)行相應(yīng)的輸入輸出通道切換。也可經(jīng)客戶端經(jīng)網(wǎng)絡(luò)到服務(wù)器串口到VGA矩陣切換器進(jìn)行VGA矩陣切換器相應(yīng)的輸入輸出通道切換(在后面介紹客戶端時(shí)再介紹)。每次切換后將自動(dòng)保存原視頻文件,如切換后有視頻數(shù)據(jù)將自動(dòng)重新生成一個(gè)新的視頻文件。
在服務(wù)器桌面顯示的畫面是沒經(jīng)任何編碼處理的,但網(wǎng)絡(luò)傳輸和保存的視頻數(shù)據(jù)是經(jīng)Divx編碼的,這樣有力的減輕了網(wǎng)絡(luò)間傳輸和服務(wù)器的負(fù)擔(dān)。
用局域網(wǎng)實(shí)時(shí)傳輸視頻數(shù)據(jù)已在一些領(lǐng)域大量的應(yīng)用,局域網(wǎng)以有線局域網(wǎng)居多,因?yàn)橛芯€局域網(wǎng)技術(shù)成熟、傳輸速度快,但是長(zhǎng)時(shí)間傳輸大量視頻數(shù)據(jù)時(shí)也會(huì)引起傳輸速率不穩(wěn)定,引起數(shù)據(jù)堵塞,會(huì)導(dǎo)致視頻傳輸?shù)馁|(zhì)量大幅度下降,容易引起畫面的重影、抖動(dòng)、花屏、延遲等現(xiàn)象。
為了在局域網(wǎng)上有效的、高質(zhì)量的實(shí)時(shí)傳輸媒體流,需要多種技術(shù)的支持,包括網(wǎng)絡(luò)傳輸層協(xié)議的選擇、編(解)碼技術(shù),網(wǎng)絡(luò)傳輸層質(zhì)量控制技術(shù)等等。
實(shí)時(shí)傳輸協(xié)議RTP是針對(duì)Internet上多媒體數(shù)據(jù)流的一個(gè)傳輸協(xié)議,實(shí)時(shí)傳輸控制協(xié)議RTCP負(fù)責(zé)管理傳輸質(zhì)量在當(dāng)前應(yīng)用進(jìn)程之間交換控制信息,RTP/RTCP協(xié)議只適合服務(wù)器端和客戶端相對(duì)動(dòng)態(tài)的實(shí)時(shí)多媒體數(shù)據(jù)流傳輸。但是,對(duì)于圖像采集速度固定的實(shí)時(shí)視頻采集,有時(shí)會(huì)引起采集的數(shù)據(jù)來不及壓縮而直接丟棄而達(dá)不到實(shí)時(shí)的要求,所以沒有采用RTP/RTCP協(xié)議,而是從發(fā)送端出發(fā),實(shí)時(shí)判斷網(wǎng)絡(luò)狀況,采用暫停發(fā)送的控制策略進(jìn)行實(shí)時(shí)傳輸。
網(wǎng)絡(luò)傳輸層質(zhì)量控制技術(shù)采用的是TCP/UDP協(xié)議,UDP是一種不可靠的、無連接的協(xié)議,UDP適用于一次只傳送少量數(shù)據(jù)、對(duì)可靠性要求不高的應(yīng)用環(huán)境。它不提供檢錯(cuò)和糾錯(cuò)功能,一旦網(wǎng)絡(luò)出現(xiàn)堵塞時(shí),大量的數(shù)據(jù)報(bào)文會(huì)丟失。對(duì)于Divx編解碼技術(shù),是以幀為單位進(jìn)行編解碼的,分為關(guān)鍵幀和非關(guān)鍵幀。在傳輸過程中,由于壓縮率比較高,只要一幀中錯(cuò)一比特位,將影響其后的更多的比特位,直接造成圖像的模糊、花屏等現(xiàn)象。只有等到下一次關(guān)鍵幀的到來才有可能恢復(fù)圖像的清晰。為了保證傳輸?shù)恼_性,自己需要在應(yīng)用層制定協(xié)議。如此一來,只能選擇使用TCP來進(jìn)行網(wǎng)絡(luò)通信,TCP的目的是提供可靠的數(shù)據(jù)傳輸,并在相互進(jìn)行通信的設(shè)備或服務(wù)之間保持一個(gè)虛擬連接。TCP在數(shù)據(jù)包接收無序、丟失或在交付期間被破壞時(shí),負(fù)責(zé)數(shù)據(jù)恢復(fù)。它通過為其發(fā)送的每個(gè)數(shù)據(jù)包提供一個(gè)序號(hào)來完成此恢復(fù)。再輔助以暫停發(fā)送的控制策略,較好的解決局域網(wǎng)中實(shí)時(shí)視頻傳輸容易引起的重影、抖動(dòng)、花屏的問題。
為了達(dá)到視頻傳輸?shù)膶?shí)時(shí)性,總的思想是最少的發(fā)送冗余信息,最大程度上發(fā)送最新的視頻。
在服務(wù)器端視頻采集采用從VisionRGB視頻采集卡捕獲視頻圖像,得到的是位圖型式的視頻幀,然后用Divx編碼進(jìn)行壓縮,通過Winsock實(shí)現(xiàn)壓縮后的視頻數(shù)據(jù)在局域網(wǎng)中的實(shí)時(shí)傳輸,在客戶端接收完的數(shù)據(jù)交給Divx解碼器解壓,最后實(shí)現(xiàn)視頻顯示。如圖三所示:
圖三網(wǎng)絡(luò)間傳輸流程圖
如果局域網(wǎng)通信速率很高且狀態(tài)穩(wěn)定,則進(jìn)行實(shí)時(shí)視頻傳輸就可以達(dá)到非常好的效果。但是在網(wǎng)絡(luò)出現(xiàn)異常時(shí)會(huì)導(dǎo)致數(shù)據(jù)傳輸率不穩(wěn)定或明顯下降,造成發(fā)送端數(shù)據(jù)積壓。此時(shí)就要采取一定的策略來控制發(fā)送端(服務(wù)器端),以達(dá)到實(shí)時(shí)性的要求,暫停發(fā)送策略很好的解決了這一現(xiàn)象。使用此策略有時(shí)會(huì)有丟幀的現(xiàn)象(100M局域網(wǎng)沒有發(fā)現(xiàn)丟幀現(xiàn)象),但就客戶端的要求是滿足的,在服務(wù)器端的采集、顯示、保存不受暫停發(fā)送策略的影響,也就是不會(huì)有丟幀的現(xiàn)象,雖然應(yīng)用了暫停發(fā)送策略,但已經(jīng)能夠滿足在客戶端實(shí)時(shí)監(jiān)控需求了。
3.2客戶端的實(shí)現(xiàn)
在上面講服務(wù)器端的實(shí)現(xiàn)時(shí)已經(jīng)大概講到客戶端的實(shí)現(xiàn),因?yàn)橹灰逊?wù)器端實(shí)現(xiàn)好客戶端實(shí)現(xiàn)難點(diǎn)就小的多。如圖四所示:
圖四客戶端程序流程圖
在客戶端也可以自行選擇要采集的通道,但對(duì)服務(wù)器端的采樣率等都不能通過客戶端進(jìn)行設(shè)置,實(shí)現(xiàn)客戶端時(shí)主要是要實(shí)時(shí)監(jiān)聽和服務(wù)器網(wǎng)絡(luò)連接狀態(tài)和判斷接受的視頻數(shù)據(jù)是否正常是否啟用暫停發(fā)送策略等。每秒接收的幀數(shù)可自行調(diào)節(jié),但不能大于服務(wù)器端每秒采集的幀數(shù)。
在客戶端還要實(shí)時(shí)Divx解碼,如果不解碼就無法顯示,Divx解碼速度是完全可以達(dá)到實(shí)時(shí)顯示的要求。Divx解碼和顯示在不同的兩個(gè)線程中實(shí)現(xiàn)的,這樣做主要是為了顯示流暢。可以在兩個(gè)不同客戶端顯示兩個(gè)不同的視頻通道采集的數(shù)據(jù)。
4結(jié)論
本系統(tǒng)作為電視跟蹤系統(tǒng)的一部分,負(fù)責(zé)多路視頻數(shù)據(jù)的實(shí)時(shí)采集、存儲(chǔ)和視頻編解碼算法的實(shí)現(xiàn)、基于C/S結(jié)構(gòu)的實(shí)時(shí)視頻數(shù)據(jù)傳輸顯示,在通過各種測(cè)試后在試運(yùn)行期間已達(dá)到本系統(tǒng)的預(yù)期要求,本系統(tǒng)還支持事后的視頻回放。
本系統(tǒng)的開發(fā)難點(diǎn)和重點(diǎn)在服務(wù)器端,服務(wù)器端的開發(fā)直接影響到整個(gè)系統(tǒng)開發(fā)。
參考文獻(xiàn)
[1]《Windows核心編程》Microsoft公司〔美〕著
[2]《Windows多媒體編程基礎(chǔ)》作者:張靜,梁澍編
[3]《Windows網(wǎng)絡(luò)編程》Microsoft公司〔美〕著