為什么要編碼
- 編碼就是壓縮圖像
- 手機攝像頭采集的都是一幀一幀的圖片,只要每秒采集了24幀,看起來就比較流暢,視頻就是由一幀一幀的圖片構成的,常見圖片格式png,jpg,一張圖片2M,一秒鐘30幀,那么1秒就是60M,這么多保存到本地是沒問題,但是進行網絡傳輸,尤其是在外網傳輸,每一秒傳輸60M,在中國是不可能達到這個帶寬,那這時候就要對每一幀圖象進行壓縮
- 帶寬:每秒網絡傳輸的數據,每秒10M,每秒傳輸10M數據
怎么編碼
H.264算法
因為第一幀和第二幀,可能沒什么變化,`只傳輸不一樣的部分``,這樣圖片壓縮率就非常高,所以在網絡中傳輸都會采用h.264進行傳輸,當然現在也有H.265,如果傳輸的720p,其實差距不大,h.265用于高清圖片4k,比較大的圖片.
I frame :幀內編碼幀 又稱intra picture,I 幀通常是每個 GOP(MPEG 所使用的一種視頻壓縮技術)的第一個幀,經過適度地壓縮,做為隨機訪問的參考點,可以當成圖象。I幀可以看成是一個圖像經過壓縮后的產物。
P frame: 前向預測編碼幀 又稱predictive-frame,通過充分將低于圖像序列中前面已編碼幀的時間冗余信息來壓縮傳輸數據量的編碼圖像,也叫預測幀;
B frame: 雙向預測內插編碼幀 又稱bi-directional interpolated prediction frame,既考慮與源圖像序列前面已編碼幀,也顧及源圖像序列后面已編碼幀之間的時間冗余信息來壓縮傳輸數據量的編碼圖像,也叫雙向預測幀;
怎么解碼
學習重點推薦
- 重點了解解碼,編碼FFmpeg有X264編碼,但是實際過程中,很少用到軟編碼,軟編碼效率非常低,因為大量的嵌入式設備手機都集成了硬編碼,可以直接把圖像編碼成H.264
解碼
- 解碼的時候僅用I幀的數據就可重構完整圖像
- 在發網絡數據的時候,2到3秒就需要一個I幀,否則傳給去的圖片可能半天看不到圖像(IPBPBPB IPBPBPB)
- h.264由一個個NAL組成,每一段NAL由IPB組成(IPBPBPB),解析NAL還原圖像,就能展示