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