1.封裝格式
MPEG-4
其中 MPEG-1 和 MPEG-2 是採用相同原理爲基礎的預測編碼、變換編碼、 熵編碼及運動補償等第一代數據壓縮編碼技術;
MPEG-4(ISO/IEC 14496)則是基於第二代壓縮編碼技術制定的國際標準,它以視聽媒體對象爲基本單元,採用基於內容的壓縮編碼,實現數字視音頻、圖形合成應用及交互式多媒體的集成。 MPEG 系列標準對 VCD、 DVD 等視聽消費電子及數字電視和高清晰度電視(DTV&&HDTV)、 多媒體通訊等信息產業的發展產生了巨大而深遠的影響.
AVI
AVI,音頻視頻交錯(Audio Video Interleaved)的英文縮寫。 AVI 格式調用方便、圖像質量好,壓縮標準可任意選擇,是應用最普遍、也是應用時間最長的格式之一。
FLV
FLV 是 FLASH VIDEO 的簡稱, FLV 流媒體格式是一種新的視頻格式。因爲它造成的文件極小、加載速度極快,使得網絡觀看視頻文件成爲可能,它的出現有效地解決了視頻文件導入 Flash 後,使導出的 SWF 文件體積龐大,不能在網絡上很好的使用等缺點。html
2.編碼格式
視頻部分
h26四、wmv、xvid、mjpeg(攝像頭出來的每一幀都是mjpeg,缺點在於只有I幀、沒有B幀、P幀)
音頻部分
acc、MP三、ape、flac
3.文件封裝格式和編碼格式數組
視頻解碼網絡
音頻解碼ide
4.像素格式
壓縮編碼中通常使用的是RGB24,YUV420 , YUV420P, YUV422P, YUV444P等格式數據,最多見的是YUV420P.
RGB格式
BMP文件存儲的就是RGB格式像素數據
yuv格式
y表示明亮度,而u(Cb 藍色色差值)和v(Cr 紅色色差值)則表示色度值.它將亮度信息(Y)與色彩信息(UV)分離,沒有UV信息同樣能夠顯示完整的圖像,只不過是黑白的,因爲UV色度不是很明顯看出,因此除了YUV4:4:4外,又誕生了YUV4:2:2,YUV4:2:0格式.從而佔用極少的存儲數據.post
以下圖所示,黑點表示該像素點的Y份量,以空心圓圈表示像素點的UV份量:學習
YUV420、YUV420P、YUV420SP區別ui
5.YUV和RGB轉換格式編碼
RGB 轉換成 YUVspa
YUV 轉換成 RGBcode
RGB取值範圍均爲0~255,Y=0~255,U=-122~+122,V=-157~+157
如下是通過簡化的公式,運算量比上述公式要小一些。
RGB轉YUV
YUV轉RGB
PS:除了軟解以外,則還能夠交給GPU進行硬解.
6.DTS、PTS、GOP
而dts和pts值是不必定是相等的,以下圖GOP(Group of Picture)所示:
從上圖,能夠看到,DTS和PTS的順序是不一致的,而且每組GOP中開頭都是I幀,而後後面都是B、P幀,若是開頭的I幀圖像質量比較差時,也會影響到一個GOP中後續B、P幀的圖像質量.
通常平均來講, I 的壓縮率是 7(跟 JPG 差很少), P 是 20, B 能夠達到 50.
在ffmpeg中,pts和dts單位都是不肯定,若是要換算爲時分秒,則須要AVStream的time_base時基來一塊兒換算出當前顯示的標準時間
而time_base結構體爲AVRational:
因此計算時分秒爲:
if (frame->pts != AV_NOPTS_VALUE) dpts = av_q2d(is->video_st->time_base) * frame->pts;