像動畫是25幀/秒,壹般的視頻文件是30幀/秒左右,對於壹些要求比較高的,對動作的精細度是有要求的,如果想捕捉完整的動作,高級相機壹般是60幀/秒,比如拍攝運動員在100米短跑中的動作。但是,對於蝸牛這樣的壹組幀來說,它的變化是非常小的。為了壓縮數據,可以將第壹幀完全保存為後續幀的依賴關系,以便後面的第二幀可以存儲第壹幀的差異,以此類推。沒有這個關鍵幀,後面要解碼的數據就無法完成,所以I幀尤為關鍵。
視頻的第壹幀將被保存為關鍵幀,後續幀將向前依賴,即第二幀依賴於第壹幀,所有後續幀僅存儲前壹幀的差異,從而大大減少數據並實現高壓縮比。
如果壹秒鐘有30幀,這30幀可以作為壹組來繪制。如果相機或鏡頭在壹分鐘內沒有變化,則這壹分鐘內的所有幀也可以作為壹組繪制。
什麽是壹組框架?
也就是說,從壹個I幀到下壹個I幀,包括B幀/P幀在內的這組數據被稱為GOF。
SPS/PPS實際上存儲了GOP的參數和GOP的相關信息。沒有這些信息,我們的解碼工作就無法順利進行。
SPS(序列參數集)存儲幀數、參考幀數、解碼圖像大小、幀場編碼模式選擇標識符等。
PPS(圖片參數集),用於存儲熵編碼模式選擇標識符、片數、初始量化參數和去塊濾波器系數調整標識符(與圖像相關的信息)。
在壹組幀之前,我們首先接收SPS/PPS數據。沒有這兩組數據,我們無法解碼。如果我們在解碼時出錯,我們必須首先檢查是否有SPS/PPS。如果沒有,可能是因為我們沒有發送或丟失了。SPS/PPS數據正在發送過程中。我們也將其歸類為I幀,這兩組數據壹定不能丟失。
當我們觀看視頻時,如果我們遇到屏幕/卡頓現象,通常是GOF的問題。
所以,綜上所述,華屏丟失數據,卡頓因為害怕華屏主動丟失數據,導致卡頓。
x264/x265
X264是目前使用最廣泛的編解碼器,其性能非常出色。如果使用軟編輯,則為x264。基本使用的x265也在走向成熟。在直播系統中,由於其非常高的壓縮比,它占用了非常高的CPU,這是目前直播系統中不可用的。x265可以在點播系統中試用。
openH264
與X264相比,它的性能較低,但它有壹個特點,即它支持SVC視頻技術,即視頻數據分層傳輸並分為小、中、大三部分。如果網絡很差,則只傳輸最小的內核視頻幀。如果網絡稍微好壹點,中間層也傳輸。如果網絡良好,三層都傳輸,然後三層數據可以疊加在壹起形成原始視頻。如果只有最小的內核層,
缺點是SVC不是移動終端上的標準,許多硬件不支持它。如果使用SVC,則不能使用硬編碼,而只能使用軟編碼,這將消耗大量CPU,並且會導致手機燃燒和耗電等問題。
vp8/vp9
谷歌退出,vp8對應X264,VP9對應x265。
H.265是壹種新的視頻壓縮標準,其核心價值是在原有帶寬下傳輸更高質量的網絡視頻,而播放相同質量的視頻只需原有帶寬的壹半左右。
265編碼的結果是我們想要的,但在編碼過程中,H.265比H.264復雜得多,需要更多的功耗和更長的時間,並且對設備的要求也更高。而且目前的主流瀏覽器都不支持H.265,這就導致即使H.265有很大的優勢,也沒有取代H.264成為主流。