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