一、概述
隨著網(wǎng)絡(luò)視頻服務(wù)器的越來越普及,隨著全球眼,平安城市等項目的全面開展,在視頻監(jiān)控行業(yè)中,通過網(wǎng)絡(luò)來傳輸視頻已經(jīng)成為發(fā)展趨勢。通過網(wǎng)絡(luò)來傳輸視頻,不僅可以利用網(wǎng)絡(luò)的資源將視頻圖像傳輸?shù)母h,從而不受距離限制;同時,網(wǎng)絡(luò)的應(yīng)用給視頻監(jiān)控帶來了更多新穎的功能,完全可以達到各種用戶專業(yè)化監(jiān)控的要求??梢灶A(yù)見,未來的視頻監(jiān)控一定是網(wǎng)絡(luò)化的視頻監(jiān)控,這應(yīng)該是不可逆轉(zhuǎn)的潮流。
在當(dāng)前的網(wǎng)絡(luò)條件下,很多用戶發(fā)現(xiàn)網(wǎng)絡(luò)視頻服務(wù)器在通過網(wǎng)絡(luò)傳輸視頻信息時經(jīng)常遇到帶寬過低或者帶寬不穩(wěn)的問題,導(dǎo)致視頻在這樣的帶寬條件下無法正常的傳輸連續(xù)的視頻圖像,用戶在瀏覽視頻圖像時感覺畫面停頓感、滯后感非常強烈,無法達到其監(jiān)控要求。
也許你也遇到過這樣的問題,當(dāng)你把網(wǎng)絡(luò)視頻服務(wù)器放在Internet網(wǎng)上時,圖像畫面非常卡,非常不流暢,可能幾秒畫面才動一下,或者畫面干脆很長時間不動了。在這樣的環(huán)境下你使用網(wǎng)絡(luò)視頻服務(wù)器根本無法達到你的監(jiān)控要求。
也許你還會遇到這樣的困惑,你已經(jīng)搭建了2M帶寬的網(wǎng)絡(luò),一開始時你可能只是想搭建一個企業(yè)內(nèi)部網(wǎng),開展一些網(wǎng)頁瀏覽的業(yè)務(wù),之后你可能增加了內(nèi)部下載等業(yè)務(wù),再之后你可能在你的企業(yè)網(wǎng)里增加了流媒體點播的業(yè)務(wù),同時還增加了網(wǎng)絡(luò)視頻會議等業(yè)務(wù),最后,你決定增加網(wǎng)絡(luò)視頻監(jiān)控的業(yè)務(wù)。這所有的業(yè)務(wù)同時運行在你2M帶寬的網(wǎng)絡(luò)上,有時你發(fā)現(xiàn)視頻很流暢,有時你又發(fā)現(xiàn)視頻非??o法正常瀏覽。這時,即使你人為的降低視頻服務(wù)器的比特率,仍然無法得到流暢的圖片。這是因為如果在2M帶寬下只運行一個業(yè)務(wù)帶寬是充裕的,但是當(dāng)某一時刻所有業(yè)務(wù)一起運行起來,所有業(yè)務(wù)對帶寬需求的總和一定超過2M帶寬,從而每個業(yè)務(wù)在實際使用中分得的帶寬就不夠了。這時你就會發(fā)現(xiàn)有些時段視頻圖像非常流暢,有些時段視頻圖像就非常的卡了。
也許你早期使用過MJPEG編碼方式的視頻服務(wù)器,你現(xiàn)在已經(jīng)升級到MPEG4或者H.264編碼方式的視頻服務(wù)器了,如果你的網(wǎng)絡(luò)狀況并不充裕,就像上面描述的情況一樣。那么,你會發(fā)現(xiàn),H.264或者MPEG4編碼方式的視頻服務(wù)器的視頻流暢性反而不如MJPEG編碼方式的視頻服務(wù)器的流暢性。盡管所有的廠商都告訴你H.264或者MPEG4占用更低的帶寬,擁有更好的圖像質(zhì)量,但是在你的網(wǎng)絡(luò)狀況中的表現(xiàn)卻不是這樣。
二.問題分析
以上所有的問題都來自于網(wǎng)絡(luò),網(wǎng)絡(luò)帶寬過低或者網(wǎng)絡(luò)帶寬不明確且不穩(wěn)定影響了視頻瀏覽,我們將以上的現(xiàn)象歸為如下兩大類問題:
1、網(wǎng)絡(luò)帶寬過低導(dǎo)致網(wǎng)絡(luò)視頻服務(wù)器不流暢
該情況多發(fā)生在使用ADSL等設(shè)備通過Internet網(wǎng)傳輸視頻監(jiān)控業(yè)務(wù)。大多數(shù)用戶ADSL的上行帶寬可能只有512K或者更小,在Internet實際傳輸帶寬往往大大小于512K,在使用網(wǎng)絡(luò)視頻服務(wù)器進行網(wǎng)絡(luò)視頻監(jiān)控業(yè)務(wù)時視頻圖像非常不流暢,用戶不得不不斷的降低視頻服務(wù)器bitrate值,以滿足傳輸實際帶寬的要求,同時又要保證有比較好的圖像質(zhì)量,往往這些調(diào)節(jié)工作對客戶來說操作起來很麻煩。[nextpage]
2、網(wǎng)絡(luò)帶寬不明確且不穩(wěn)定導(dǎo)致視頻服務(wù)器不流暢
正如上面舉例的第二種情況,表面上看有2M足夠的帶寬,但是實際使用中由于業(yè)務(wù)太多超出帶寬容量,導(dǎo)致視頻帶寬不夠。這種情況是帶寬不明且不穩(wěn)定的情況,適合于一些較早建設(shè)的網(wǎng)絡(luò)。早期很多網(wǎng)絡(luò)是按照2M的光纖進行建設(shè)的,在2M光纖上進行多種業(yè)務(wù)的操作,比如公司內(nèi)部網(wǎng)頁訪問、內(nèi)部下載、內(nèi)部郵件、內(nèi)部視頻點播等業(yè)務(wù)都在這2M光纖業(yè)務(wù)上。在增加了網(wǎng)絡(luò)視頻監(jiān)控業(yè)務(wù)后,仍然在原有的2M光纖上所有業(yè)務(wù),這時就會發(fā)現(xiàn)視頻圖像瀏覽非常不了流暢,幾秒甚至十幾秒才能動一下,無法滿足正常監(jiān)控業(yè)務(wù)的要求。這時用戶開始嘗試把視頻服務(wù)器的比特率不斷調(diào)低,最終發(fā)現(xiàn)無法找到一個合適的值來使圖像達到流暢。因為由于業(yè)務(wù)太多且雜,沒有人能夠?qū)崟r的知道當(dāng)前帶寬到底是多少?視頻服務(wù)器的比特率到底設(shè)置在多少合適?該現(xiàn)象尤其在Internet網(wǎng)上進行視頻監(jiān)控業(yè)務(wù)時也非常突出。
大家不禁要問,明明H.264或者MPEG4的壓縮算法先進了很多,更大的降低了碼流;但是,為何在低帶寬下的表現(xiàn)反而不如人意呢?
這要從MPEG系列壓縮算法的核心分析了。MPEG系列壓縮算法從早期的MPEG-1,MPEG-2發(fā)展到現(xiàn)在的MPEG-4以及最新的H.264,其核心壓縮原理沒有變化。MPEG系列壓縮算法都在時域上對視頻流進行壓縮。與MJPEG壓縮每一幀都是單獨JPEG圖的方式不同,MPEG系列壓縮算法采用了I幀,P幀和B幀的模式,當(dāng)前大部分壓縮芯片或者壓縮算法并沒有實現(xiàn)B幀。大家不必過分關(guān)心I幀,P幀的細節(jié),只需要知道在這三種幀模型里,I幀是關(guān)鍵幀,P幀是前向預(yù)測幀,B幀是后向預(yù)測幀。當(dāng)解碼器收到一個I幀的時候,可以立刻進行解碼,而不需要其它條件;但是,當(dāng)解碼器收到P幀或者B幀的時候,就不能夠立刻進行解碼,比如,P幀的解碼需要解碼器先解碼該幀前面的P幀或者I幀。如果前面的P幀或者I幀在網(wǎng)絡(luò)中丟掉,即使后面連續(xù)收到很多P幀,也無法正常解碼。舉個例子,在帶寬不夠的情況下網(wǎng)絡(luò)丟掉一個I幀,即使隨后的P幀都收到,仍然無法正確解碼出圖像。這就是為什么低帶寬下MPEG4或者H.264壓縮算法表現(xiàn)還不如MJEPG的原因。MJPEG每一幀都是獨立的幀,只要網(wǎng)絡(luò)傳送一幀,就可以解碼出一副圖片。在帶寬不夠的情況下,MJPEG每秒可能只能傳送3、4幀,但是,用戶已經(jīng)可以在這1秒鐘內(nèi)看到3、4副畫面了;對H.264來說,由于自身碼流本身比較低,可能在低帶寬下1秒能夠傳送15、16幀,但是,如果I幀在網(wǎng)絡(luò)上丟失了,即使連續(xù)收到15幀P幀也無法正常解碼出一副圖片,這時給用戶的直觀感覺畫面長時間停滯,低帶寬下H.264居然比不上MJPEG。
三、解決方案
出現(xiàn)上面的問題的原因并不是由于H.264壓縮算法不如MJPEG,而完全是由于我們沒有針對這樣的網(wǎng)絡(luò)環(huán)境中進行優(yōu)化,任何一個好的算法,在實際應(yīng)用中也是要根據(jù)應(yīng)用場景進行相應(yīng)的優(yōu)化處理,這樣的優(yōu)化大部分是針對網(wǎng)絡(luò)傳輸來進行的。我們可以從以下三個方面入手來解決問題。[nextpage]
1、增加編碼過程中I幀出現(xiàn)的幾率
在MPEG系列編碼算法中,通常用GOP(GROUPOFPICTURE)這一值來設(shè)置I幀產(chǎn)生的間隔,比如當(dāng)GOP設(shè)置為30時,就表示每30幀產(chǎn)生一個I幀。I幀通常占用數(shù)據(jù)量都很大,很多編碼器將GOP設(shè)置為120或者更高,這樣可以較少I幀出現(xiàn)的概率,從而降低碼流;但是帶來的后果就是當(dāng)網(wǎng)絡(luò)帶寬不夠,丟掉一個I幀,那幾秒內(nèi)無法再正確解碼數(shù)據(jù)幀直到接收到下一個I幀,導(dǎo)致畫面長時間停滯。經(jīng)過我們長期的測試,在低帶寬的情況下GOP的值調(diào)整為5比較合適,這樣1秒鐘能夠產(chǎn)生5個I幀,即使偶爾丟掉了一個I幀,下一個I幀也能很快彌補上,圖像不至于長時間的停滯。
2、實時檢測網(wǎng)絡(luò)帶寬
視頻服務(wù)器要智能的對帶寬進行實時檢測和控制,我們可以通過應(yīng)答機制等方法掌握當(dāng)前實際的網(wǎng)絡(luò)帶寬是多少,這個是完全可以通過嵌入式軟件來實現(xiàn)的。只要能實時的掌握帶寬,就可以對編碼器的策略和發(fā)送策略進行實時調(diào)整。針對不同的帶寬采取不同的編碼策略和發(fā)送策略,從而最大利用帶寬進行視頻傳輸。
3、優(yōu)化發(fā)送策略,增加I幀發(fā)送幾率
當(dāng)嵌入式軟件檢測到當(dāng)前帶寬不夠的時候,傳輸模塊應(yīng)智能的調(diào)整發(fā)送策略,增加I幀的發(fā)送幾率。除了通過降低GOP的值增加I幀的產(chǎn)出幾率,同時在網(wǎng)絡(luò)發(fā)送策略上確保I幀能夠發(fā)送成功,如可以采用帶有重發(fā)機制的協(xié)議確保I幀不會在網(wǎng)絡(luò)上丟失。這樣,可以增加有效幀對帶寬的占用,減少無效幀對帶寬的耗費。
上海卓揚科技有限公司在其H.264全系列產(chǎn)品中進行了發(fā)送策略的充分優(yōu)化,經(jīng)過詳盡的測試,在各種帶寬下進行對比測試,通過上面手段改進過的發(fā)送策略使H.264視頻服務(wù)器在低帶寬或者不明帶寬下不僅提升了圖像質(zhì)量,同時瀏覽的流暢度大大提高,可以智能的根據(jù)帶寬自動調(diào)節(jié)以保持最佳流暢性,同時,低帶寬下實時性也大幅提高。