视频压缩技术及安卓中用法
視頻編碼分類
現在視頻編碼主要是MPEG系列和H.26X系列,其中H.264是現在主流的視頻編碼方式,與H.263+和MPEG4 SP相比,減小50%比特率,實現高壓縮
H.264基本概念
H.264壓縮標準中I幀、P幀、B幀用于表示傳輸的視頻畫面。
I幀:關鍵幀。屬于幀內壓縮技術,視頻的第一幀肯定是關鍵幀。
P幀:向前壓縮幀。壓縮時只依賴于前一幀,屬于幀間壓縮技術。如果P幀丟失會造成花屏
B幀:雙向壓縮幀。壓縮時既參考前一幀也參考后一幀,屬于幀間壓縮技術。好處是可以實現更高的壓縮率,因為比如P幀下一幀信息已經存儲了,所以只需要存儲差異。缺點是對網絡要求更高,因為需要等待下一幀到來。
GOF 一組幀
SPS:序列參數集,存放幀數、參考幀數目、解碼圖像尺寸、幀場編碼模式選擇標識等
PPS:圖像參數集,存放熵編碼模式選擇標識、片組數目、初始量化參數和去方塊濾波系數調整標識等
SPS和PPS是解碼的基礎,屬于I幀。
H.264編碼原理
H.264壓縮技術
幀內預測壓縮:解決空域數據冗余問題。比如圖里人眼不明感顏色等可以刪除的
幀間預測壓縮:解決時域數據冗余問題。比如幀間重復數據
整數離散余弦變換(DCT):將空間上相關性變為頻域上無關的數據后進行量化
CABAC:上下文適應的無損壓縮
H.264宏塊劃分與分組
可以參考這個blog
https://www.cnblogs.com/oldmanlv/p/5897546.html
對比MPEG2 和H.264字塊劃分結果:
幀分組:圖像變化較小可以進行分組,通過算法得到每一幀位置,比如球的滾動
運動矢量與補償壓縮
通過算法進行連續的運動估算,得到運動矢量和殘差數據,實現幀間壓縮
通過不同幀內預測模式(9種)計算殘差值(下圖2),實現幀內壓縮。預測的圖和殘差值進行累加可以得到原圖
H.264切片與宏塊
片:一幀視頻圖像可編碼成一個或者多個片,每片包含切片頭和切片數據,每個數據包涵整數個宏塊,即每片至少一個宏塊,最多時包含整個圖像的宏塊,宏塊包涵宏塊類型、宏塊預測和編碼殘差數據
以下為關系圖:
安卓視頻用法
VideoView 是Android實現視頻播放主要控件,通過MediaPlayer來對視頻文件進行控制的,支持mp4、avi、3gp格式。
MediaController是一個多媒體的類,支持快進、快退、上一個、下一個等多媒體操作。
有復雜的業務要求需重寫VideoView
public class MovieView extends VideoView implements View.OnTouchListener, View.OnKeyListener{}總結
以上是生活随笔為你收集整理的视频压缩技术及安卓中用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于 ConcurrentHashMap
- 下一篇: 二维码服务类