;;; 視頻傳輸協(xié)議的選擇直接關(guān)系到最終的 ISL6262CRZ-T 視頻質(zhì)量。常見的傳輸協(xié)議包括TCP和UDP協(xié)議。TCP是面向連接的可靠的傳輸協(xié)議,由于它的重傳機(jī)制、較大的時延和較大的控制開銷等特性使它不適合用子視頻傳輸。UDP提供的是不可靠的傳輸,但是效率很高,時延較小,比較適合用于視頻傳輸。針對視音頻的實時傳輸性要求,IETF設(shè)計了RTP (Real-TimeTransportProtocol)/RTCP(Real-Time Transport Control Protocol)。RTP通常建立在UDP協(xié)議之上,利用UDP對實時的視頻數(shù)據(jù)進(jìn)行組播或單播,實現(xiàn)對多點和單點的視頻數(shù)據(jù)進(jìn)行傳輸。RTCP是與RTP配合使用的協(xié)議。主要功能是服務(wù)質(zhì)量的監(jiān)視與反饋、媒體間的同步,以及組播組中成員的標(biāo)識。因此,視頻傳感器節(jié)點采用了RTP/RTCP協(xié)議。
;;; 視頻傳感器節(jié)點的任務(wù)包括視頻采集、壓縮和發(fā)送3部分。邏輯上最好是采用3個獨立的任務(wù)運(yùn)行,但是如果采用多進(jìn)程的方式來將各個任務(wù)分離則會引入上下文切換的問題,會造成很大的系統(tǒng)開銷,影響系統(tǒng)的實時性。因此,視頻傳感器節(jié)點采用多線程設(shè)計,從而減少了上下文切換的開銷。視頻采集、視頻壓縮與視頻發(fā)送分別在獨立的線程中運(yùn)行。其中,視頻采集和視頻壓縮各占一個線程,視頻發(fā)送可根據(jù)需要設(shè)置多個線程對應(yīng)多個視頻傳輸請求。多線程技術(shù)簡化了系統(tǒng)設(shè)計的復(fù)雜度,優(yōu)化了系統(tǒng)資源的調(diào)度。為實現(xiàn)視頻來集、壓縮和發(fā)送的同時進(jìn)行,視頻傳感器節(jié)點中設(shè)計了視頻數(shù)據(jù)管道。視頻采集線程將采集的視頻數(shù)據(jù)送給視頻壓縮線程,進(jìn)行壓縮后送入視頻數(shù)據(jù)管道,發(fā)送線程從管道的另一端取走數(shù)據(jù)發(fā)送。
;;; 視頻數(shù)據(jù)管道的本質(zhì)就是若干個環(huán)形隊列,有發(fā)送隊列、就緒隊列、空閑隊列等。;;;;;;;;;;;; ;;
;;; ①發(fā)送隊列中的是包含視頻傳輸線程正在發(fā)送的視頻數(shù)據(jù)的數(shù)據(jù)單元,當(dāng)數(shù)據(jù)單元發(fā)送完成后該單元就從發(fā)送隊列移入空閑隊列中。
;;; ②就緒隊列中的是包含由視頻壓縮線程寫入的壓縮后視頻數(shù)據(jù)的數(shù)據(jù)單元,隨時可以加入發(fā)送隊列。
;;; ③空閑隊列中的數(shù)據(jù)單元就是尚未被使用的空閑數(shù)據(jù)單元,可供視頻壓縮線程使用,當(dāng)視頻壓縮線程將壓縮的數(shù)據(jù)寫入后,空閑數(shù)據(jù)單元就加入就緒隊列中。
;;; 視頻采集線程、壓縮線程、視頻發(fā)送線程和視頻數(shù)據(jù)管道都由視頻服務(wù)進(jìn)程創(chuàng)建和維護(hù)。當(dāng)視頻傳感器節(jié)點啟動后,視頻服務(wù)進(jìn)程會建立并初始化視頻數(shù)據(jù)管道,為視頻數(shù)據(jù)隊列的存儲做好準(zhǔn)備,然后偵聽網(wǎng)絡(luò)連接狀況,如有視頻傳輸請求且沒有超過最大連接數(shù)則開始采集、壓縮視頻流,然后寫入視頻數(shù)據(jù)管道并創(chuàng)建一個新的視頻傳輸線程與請求視頻的節(jié)點進(jìn)行會話。具體流程如圖10-55所示。