傳統(tǒng)視頻源(電腦,解碼器等)拼接上墻的做法是通過 “拼接控制器”來實(shí)現(xiàn)的。這類“拼接控制器”一般是由全硬件實(shí)現(xiàn),支持多種視頻輸入模式,如HDMI,VGA,BNC等。IP網(wǎng)絡(luò)視頻要通過這類拼接控制器拼接上墻時(shí),是要先用解碼器轉(zhuǎn)換為“拼接控制器”支持的輸入格式,如HDMI,再通過“拼接控制器”統(tǒng)一上拼接墻。這種方法可以稱為硬件上的集中處理方法。這種方法首先是對(duì)硬件有極高的依存度,十分不方便于移植,每次改進(jìn)微調(diào)都伴隨著硬件升級(jí);其次這種集中式處理方法固然十分方便可靠,但是要求客戶要購(gòu)置專門的拼接控制設(shè)備,這是一筆不小的開銷,另外組合成這種系統(tǒng)的步驟也是比較繁瑣的,既需要人力成本又需要硬件成本的昂貴支出。如果能夠做到繞開集中式的管理,繞開管理硬件的束縛,無疑是減少成本開銷和工程量的一個(gè)重要的思路。
為了解決現(xiàn)有技術(shù)中的不足,天為電信提供一種對(duì)分布式IP視頻同步上拼接墻的方法及系統(tǒng),它可以構(gòu)建一個(gè)純粹由多個(gè)解碼器組成的 分布式系統(tǒng),通過解碼器的核心主解碼芯片(如TI davinci,海思媒體芯片等處理器)提供的軟件函數(shù)接口對(duì)IP視頻進(jìn)行解碼,圖像切割,放大,再加上同步技術(shù),實(shí)現(xiàn)高精度的同步拼接上墻。
本系統(tǒng)對(duì)實(shí)施組成單元即IP解碼器的性能上有一定要求。首先,要求解碼器是軟件可編程的,這樣才能實(shí)施本文闡述的同步技術(shù);其次要求解碼器自身能支持實(shí)現(xiàn)解碼后圖像的切割和放大,這部分是由解碼器自身實(shí)現(xiàn)的;最后,解碼器還具備一般IP解碼器的基本功能,如網(wǎng)絡(luò)接口、視頻輸出等等。
本方法和系統(tǒng)的拼接技術(shù)的難度之一在于“同步”,因?yàn)槊總€(gè)拼接子屏幕都是由獨(dú)立的解碼器負(fù)責(zé)解碼輸出的,每個(gè)解碼器運(yùn)行的是非實(shí)時(shí)系統(tǒng),如unix系統(tǒng);所以其子屏間的同步性能天然地?zé)o法跟傳統(tǒng)硬件拼接器統(tǒng)一上墻方案相比,所以該技術(shù)及系統(tǒng)的技術(shù)要點(diǎn)在于把各個(gè)拼接子屏幕間的顯示時(shí)間差控制在人眼可分辨的時(shí)差之內(nèi),并貼近硬件拼接器的效果。
本系統(tǒng)提供一種分布式視頻解碼系統(tǒng)同步拼接上墻的實(shí)現(xiàn)方法,所述分布式視頻解碼系統(tǒng)包括由多個(gè)分立的IP視頻解碼器組成的解碼器集群,所述方法采用視頻拼接同步機(jī)制和解碼控制機(jī)制來實(shí)現(xiàn)多個(gè)分立的IP視頻解碼器的同步拼接上墻。
同步機(jī)制包括以下步驟:
步驟1:設(shè)定某一解碼器為主解碼器,主解碼器發(fā)送廣播包,申請(qǐng)獲取各個(gè)從解碼器的當(dāng)前待解碼幀的接收時(shí)間t_sn;
步驟2:主解碼器接收到回復(fù)后,能搜索出各個(gè)從解碼器發(fā)給主解碼 器的視頻幀在主解碼器這邊的接收時(shí)間t_hn,并算出主解碼器需要的延時(shí)時(shí)間DeLay_host;
步驟3:主解碼器就把該處理結(jié)果回復(fù)給各個(gè)從解碼器,回復(fù)內(nèi)容包括DeLay_host及t_hn;
步驟4:各個(gè)從解碼器根據(jù)t_sn、t_hn、DeLay_host的結(jié)果算出自己各自需要延時(shí)的時(shí)間Delay_slave;
進(jìn)一步地,每個(gè)解碼器每隔一段時(shí)間,通過所述的同步機(jī)制更新自己需要延時(shí)解碼的時(shí)間;
進(jìn)一步地,所述解碼控制機(jī)制的步驟如下:
1)主解碼器每接收到一個(gè)視頻幀就對(duì)從解碼器集群廣播一個(gè)幀號(hào)IDX,以表示準(zhǔn)備解碼該視頻幀IDX;
2)對(duì)于比主解碼器先接收到幀IDX的從解碼器,會(huì)等待主解碼器的廣播通知;未收到通知時(shí),就暫時(shí)不解碼幀IDX,當(dāng)接收到廣播包時(shí),就延時(shí)Delay_slave=Delay_host再進(jìn)行解碼幀IDX;對(duì)于較主解碼器晚接收到幀IDX的從解碼器,接收到這個(gè)廣播包后,就各自根據(jù)之前算出來的延時(shí)Delay_slave=Delay_host–(t_sn–t_hn)進(jìn)行延后解碼幀IDX;
進(jìn)一步地,本系統(tǒng)還提供一種分布式視頻解碼系統(tǒng),所述分布式視頻解碼系統(tǒng)包括由多個(gè)分立的IP視頻解碼器組成的解碼器集群,所述系統(tǒng)采用上述方法實(shí)現(xiàn)多個(gè)分立的IP視頻解碼器的同步拼接上墻。
本系統(tǒng)提出基于IP視頻解碼器的拼接上墻方式,這種方式是基于分布式,即多個(gè)分立的IP視頻解碼器來實(shí)現(xiàn),基本原理就是通過多個(gè)解碼器各自選取IP圖像的一部分直接解碼上墻,繞開集中式拼接控制器的限制,不需要購(gòu)置一個(gè)昂貴的拼接管理硬件平臺(tái),從而做到有效地減少成本和復(fù)雜度,同時(shí)也能達(dá)到更好的效果;而且這種分布式方法的同步機(jī)制是基于軟件實(shí)施的,對(duì)硬件依存度很低,十分方便移植到不同的硬件平臺(tái)。
具體實(shí)施方式:
本系統(tǒng)基于這樣一種思想:首先,在解碼器集群中的任意解碼器,都向任一公共時(shí)間服務(wù)器(所述公共時(shí)間服務(wù)器可以是解碼器集群中的一個(gè))進(jìn)行校準(zhǔn),如使用Network Time Protocal,NTP進(jìn)行對(duì)時(shí),由于用于拼接的解碼器在大多數(shù)的情況下共享同一個(gè)交換機(jī),所以解 碼器的非實(shí)時(shí)系統(tǒng)之間的時(shí)差能達(dá)到NTP協(xié)議“LAN環(huán)境下小于1ms的時(shí)差”,如圖1所示。NTP對(duì)時(shí)的實(shí)現(xiàn)十分簡(jiǎn)單,如可使用第三方軟件等實(shí)現(xiàn),這里對(duì)時(shí)只是我們同步技術(shù)的一種統(tǒng)一各個(gè)解碼器時(shí)間的一個(gè)手段,也可以使用別的高精度對(duì)時(shí)方式。所以對(duì)時(shí)方式只是我們同步技術(shù)的運(yùn)行基礎(chǔ),而不是運(yùn)行方式和技術(shù)要點(diǎn),所以對(duì)此不再做累述。
在解碼器集群有了一個(gè)同一的時(shí)間后,就可以運(yùn)行本發(fā)明的視頻拼接同步機(jī)制。其最基本想法就是:解碼器解碼同一個(gè)IP視頻流,因?yàn)榫W(wǎng)絡(luò)、視頻服務(wù)器負(fù)載等各種因素,必然會(huì)導(dǎo)致每個(gè)解碼器接收同一視頻幀的時(shí)間不同,這種時(shí)間差往往會(huì)達(dá)到幾百甚至上千毫秒,從而導(dǎo)致用戶觀測(cè)出多個(gè)畫面不同步,這是進(jìn)行拼接的關(guān)鍵矛盾。雖然接收時(shí)間有異,但是可以通過控制該視頻幀解碼顯示的時(shí)間來解決這個(gè)問題。具體來說,就是先接受到該視頻幀的解碼器等待晚接收到該幀的解碼器,在解碼器集群都收到該幀后,讓系統(tǒng)中的解碼器都在同一時(shí)刻解碼并顯示該視頻幀。這樣雖然網(wǎng)絡(luò)接收時(shí)有時(shí)差,但是解碼及屏幕顯示都在同一時(shí)間點(diǎn),也能保證到視頻顯示的同步,從而使拼接同步效果極大地接近傳統(tǒng)拼接方法。這就是本分布式IP視頻解碼器同步拼接上墻的關(guān)鍵技術(shù)點(diǎn),也是下面要詳細(xì)說明的內(nèi)容。
在詳述前,先明確兩個(gè)假設(shè):1.在較短時(shí)間內(nèi)(如:0.5s—10s),解碼器所連接的同一個(gè)交換機(jī)的分發(fā)數(shù)據(jù)速度變化可以忽略;2.在同一交換機(jī)中的解碼器間,解碼器互相發(fā)送小數(shù)據(jù)包的時(shí)間可以忽略。
基于上述假設(shè),首先解碼器n需要每隔一段時(shí)間,通過下文要詳 述的同步機(jī)制,更新自己因?yàn)橐斤@示而需要延時(shí)解碼的時(shí)間Delay_n,然后使用下文詳述的解碼控制機(jī)制保證該解碼器在這段時(shí)間內(nèi)所有接收到的視頻幀按照Delay_n延時(shí)輸出,即可完成拼接同步功能。
一、同步機(jī)制的具體做法如下:
步驟1:如圖2所示,首先設(shè)定某一解碼器為主解碼器,負(fù)責(zé)協(xié)調(diào)各從解碼器的工作,主解碼器發(fā)送廣播包,申請(qǐng)獲取各個(gè)從解碼器的當(dāng)前待解碼幀的接收時(shí)間。
步驟2:參見圖3,主解碼器接收到回復(fù)后,能搜索出自身相應(yīng)的幀的接收時(shí)間t_hn,根據(jù)這個(gè)時(shí)間,算出主解碼器與各個(gè)從解碼器間該幀接收的時(shí)間t_sn的差值,取出最大的時(shí)間差Delay_Max,這個(gè)差值就是主解碼器需要的延時(shí)DeLay_host。如果某一個(gè)幀的接收時(shí)間搜索不出來,證明從解碼器接收該幀比主解碼器接收的早,t_hn取所有t_sn中的最大值。
步驟3,如圖4所示,這時(shí),主解碼器就可以把該處理結(jié)果回復(fù)給各個(gè)從解碼器,回復(fù)內(nèi)容有主解碼器需要的延時(shí)DeLay_host及從解碼器發(fā)給主解碼器的視頻幀在主解碼器這邊的接收時(shí)間t_hn。
步驟4,采用如下公式:
Delay_slave=Delay_host,t_sn-t_hn<0Delay_host-(t_sn-t_hn),t_sn-t_hn>=0]]>
根據(jù)上面采集的這些信息,從解碼器可以算出自己各自需要延時(shí)的時(shí)間Delay_slave。
延時(shí)每隔一個(gè)適當(dāng)?shù)臅r(shí)間就重復(fù)步驟1至步驟4就進(jìn)行一次校準(zhǔn), 更新后解碼器就能根據(jù)網(wǎng)絡(luò)環(huán)境自動(dòng)協(xié)調(diào)同步需要的解碼延時(shí),其中Delay_n包括主解碼器的需要延時(shí)的時(shí)間DeLay_host以及各個(gè)從解碼器需要延時(shí)的時(shí)間Delay_slave。
二、解碼控制機(jī)制的具體做法如下:
整個(gè)流程同步流,如圖5所示,在一段時(shí)間內(nèi),主從解碼器都根據(jù)各自算出來的Delay延遲時(shí)間來對(duì)從網(wǎng)絡(luò)接收到的視頻幀進(jìn)行延時(shí),確保解碼輸出的同步。
主解碼器每接收到一個(gè)視頻幀就對(duì)從解碼器集群廣播一個(gè)幀號(hào)IDX,以表示準(zhǔn)備解碼該視頻幀IDX。對(duì)于比主解碼器先接收到幀IDX的解碼器,會(huì)等待主解碼器的這個(gè)廣播通知。未收到通知時(shí),就暫時(shí)不解碼幀IDX,當(dāng)接收到廣播包時(shí),就延時(shí)Delay_slave=Delay_host的時(shí)間再進(jìn)行解碼IDX幀。對(duì)于較主解碼器晚接收到幀IDX的從解碼器,接收到這個(gè)廣播包后,就各自根據(jù)之前算出來的延時(shí)Delay_host–(t_sn–t_hn)進(jìn)行延后解碼幀IDX。
在本系統(tǒng)中由于NTP對(duì)時(shí)在LAN環(huán)境下,能達(dá)到1ms的誤差,這樣,組成拼接的解碼器集群都跟主解碼器進(jìn)行NTP同步對(duì)時(shí)的情況下,它們之間的時(shí)間誤差為小于等于2ms,加上一般軟件操作系統(tǒng)的10ms的時(shí)間精度,這個(gè)誤差大概控制在20ms以內(nèi),人眼無法識(shí)別出這個(gè)誤差。