出現(xiàn)上面的問題的原因并不是由于H.264壓縮算法不如MJPEG,而完全是由于我們沒有針對這樣的網(wǎng)絡(luò)環(huán)境中進(jìn)行優(yōu)化,任何一個好的算法,在實(shí)際應(yīng)用中也是要根據(jù)應(yīng)用場景進(jìn)行相應(yīng)的優(yōu)化處理,這樣的優(yōu)化大部分是針對網(wǎng)絡(luò)傳輸來進(jìn)行的。我們可以從以下三個方面入手來解決問題。
一、增加編碼過程中I幀出現(xiàn)的幾率。
在MPEG系列編碼算法中,通常用GOP(GROUP OF PICTURE)這一值來設(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幀也能很快彌補(bǔ)上,圖像不至于長時間的停滯。
二、實(shí)時檢測網(wǎng)絡(luò)帶寬
視頻服務(wù)器要智能的對帶寬進(jìn)行實(shí)時檢測和控制,我們可以通過應(yīng)答機(jī)制等方法掌握當(dāng)前實(shí)際的網(wǎng)絡(luò)帶寬是多少,這個是完全可以通過嵌入式軟件來實(shí)現(xiàn)的。只要能實(shí)時的掌握帶寬,就可以對編碼器的策略和發(fā)送策略進(jìn)行實(shí)時調(diào)整。針對不同的帶寬采取不同的編碼策略和發(fā)送策略,從而最大利用帶寬進(jìn)行視頻傳輸。
三、優(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ā)機(jī)制的協(xié)議確保I幀不會在網(wǎng)絡(luò)上丟失。這樣,可以增加有效幀對帶寬的占用,減少無效幀對帶寬的耗費(fèi)。
上海卓揚(yáng)科技有限公司在其H.264全系列產(chǎn)品中進(jìn)行了發(fā)送策略的充分優(yōu)化,經(jīng)過詳盡的測試,在各種帶寬下進(jìn)行對比測試,通過上面手段改進(jìn)過的發(fā)送策略使H.264視頻服務(wù)器在低帶寬或者不明帶寬下不僅提升了圖像質(zhì)量,同時瀏覽的流暢度大大提高,可以智能的根據(jù)帶寬自動調(diào)節(jié)以保持最佳流暢性,同時,低帶寬下實(shí)時性也大幅提高。