一属铁、概述
圖像信息經(jīng)采集后生成的原始視頻數(shù)據(jù),數(shù)據(jù)量非常大躬翁,對(duì)于某些采集后直接本地播放的應(yīng)用場(chǎng)合焦蘑,不需要考慮壓縮技術(shù)。但現(xiàn)實(shí)中更多的應(yīng)用場(chǎng)合盒发,涉及視頻的傳輸與存儲(chǔ)例嘱,傳輸網(wǎng)絡(luò)與存儲(chǔ)設(shè)備無(wú)法容忍原始視頻數(shù)據(jù)的巨大數(shù)據(jù)量,必須將原始視頻數(shù)據(jù)經(jīng)過(guò)編碼壓縮后宁舰,再進(jìn)行傳輸與存儲(chǔ)拼卵。
二、為什么要進(jìn)行視頻壓縮蛮艰?
(1)未經(jīng)壓縮的數(shù)字視頻的數(shù)據(jù)量巨大
(2)存儲(chǔ)困難腋腮,如:一張DVD只能存儲(chǔ)幾秒鐘的未壓縮數(shù)字視頻
(3)傳輸困難,如:1兆的帶寬傳輸一秒的數(shù)字電視視頻需要大約4分鐘,720p RGB 15幀每秒碼率計(jì)算: 1280 x 720 x 3 x 15 ≈ 41MB ≈ 331Mb
三即寡、視頻壓縮的可行性徊哑,為什么可以進(jìn)行視頻壓縮?
將視頻數(shù)據(jù)中的冗余信息去除聪富,尋找像素之間的相關(guān)性莺丑,還有不同時(shí)間的圖像幀之間的相關(guān)性。
冗余信息類(lèi)別 | 內(nèi)容 | 壓縮方法 |
---|---|---|
空間冗余 | 圖像相鄰像素之間有較強(qiáng)的相關(guān)性 | 變換編碼墩蔓、幀內(nèi)預(yù)測(cè) |
時(shí)間冗余 | 視頻序列的相鄰圖像之間內(nèi)容相似 | 運(yùn)動(dòng)補(bǔ)償梢莽、幀間預(yù)測(cè) |
編碼冗余 | 不同像素值出現(xiàn)的概率不同 | 輪廊編碼、區(qū)域分割 |
視覺(jué)冗余 | 人的視覺(jué)系統(tǒng)對(duì)某些細(xì)節(jié)不敏感 | 非線(xiàn)性量化钢拧、位分配 |
知識(shí)冗余 | 收發(fā)兩端對(duì)人物的共有認(rèn)識(shí) | 基于知識(shí)的編碼 |
其他 | 不確定因素 |
四蟹漓、視頻壓縮分類(lèi)
- 無(wú)損壓縮(Lossless),壓縮前解壓縮后圖像完全一致X=X'源内,壓縮比低(2:1~3:1)葡粒,例如:Winzip,JPEG-LS膜钓,哈夫曼編碼嗽交,
- 有損壓縮(Lossy),壓縮前解壓縮后圖像不一致X≠X'颂斜,壓縮比高(10:1~20:1)夫壁,利用人的視覺(jué)系統(tǒng)的特性,例如:MPEG-2沃疮,H.264/AVC盒让,AVS
五、視頻編碼是什么司蔬?
視頻編碼 是壓縮和可能改變視頻內(nèi)容格式的過(guò)程邑茄,有時(shí)甚至將模擬源更改為數(shù)字源。在壓縮方面俊啼,目標(biāo)是減少占用空間肺缕。這是因?yàn)樗且粋€(gè)有損的過(guò)程,會(huì)拋棄與視頻相關(guān)的信息授帕。在解壓縮以進(jìn)行回放時(shí)同木,創(chuàng)建原始的近似值。應(yīng)用的壓縮越多跛十,拋出的數(shù)據(jù)越多彤路,近似值與原始數(shù)據(jù)相比越差。
六芥映、什么是視頻編解碼器洲尊?
視頻編解碼器是通過(guò)軟件或硬件應(yīng)用程序完成的視頻壓縮標(biāo)準(zhǔn)缝裤。編解碼器,如:H.264颊郎,VP8,RV40以及其他標(biāo)準(zhǔn)或更高版本(VP9)
- 編碼器(Encoder) -- 壓縮信號(hào)的設(shè)備或程序霎苗,用于壓縮視頻。
- 解碼器(Decoder) -- 解壓縮信號(hào)的設(shè)備或程序,用于重新創(chuàng)建視頻的近似值以用于回放檀蹋。
注:音頻編解碼器哩掺,如:LAME / MP3,F(xiàn)raunhofer FDK AAC厘擂,F(xiàn)LAC等昆淡。
七、編碼的基本概念及原理
1. 預(yù)測(cè)編碼
根據(jù)已經(jīng)編碼好的塊信息得到一個(gè)預(yù)測(cè)值刽严,這樣只需要編碼實(shí)際值與預(yù)測(cè)值之間的差異即可昂灵。
空間冗余的消除:
幀內(nèi)預(yù)測(cè):根據(jù)同一幀中相鄰已編碼好的塊信息得到預(yù)測(cè)數(shù)據(jù),編碼差異數(shù)據(jù)
時(shí)間冗余的消除:
幀間預(yù)測(cè):根據(jù)已編碼幀中的塊信息得到預(yù)測(cè)數(shù)據(jù)舞萄,編碼差異數(shù)據(jù)
2. IPB幀類(lèi)型(經(jīng)過(guò)壓縮后的幀類(lèi)型)
I 幀:僅采用幀內(nèi)壓縮技術(shù)眨补,壓縮效率最低,編解碼無(wú)需用到其他幀的信息倒脓,是GOP的起始點(diǎn)撑螺。
P 幀:前向預(yù)測(cè)幀,編解碼只參考前一個(gè)幀崎弃,可作為其他圖像編碼時(shí)的參考幀甘晤,屬幀間壓縮技術(shù)。
B 幀:雙向預(yù)測(cè)幀饲做,編解碼既參考前一幀也可參考后一幀线婚,壓縮效率最高,復(fù)雜度高艇炎,時(shí)延較大酌伊,屬幀間壓縮技術(shù)。
3. GOP (圖像組)
GOP(group of pictures)一般指兩個(gè)I幀之間的間隔幀數(shù)缀踪,兩個(gè)I幀之間是一個(gè)圖像序列居砖,在一個(gè)圖像序列中只有一個(gè)I幀。
IPB序列 | IP序列 |
---|---|
直播場(chǎng)景下驴娃,由于對(duì)延時(shí)高要求奏候,而B(niǎo)幀會(huì)帶來(lái)延時(shí),所以都是使用IP序列
4. H264壓縮技術(shù) -- 基本概念
H.264 原始碼流(?稱(chēng)為 裸流)唇敞,是由?個(gè)接?個(gè)的 NALU 組成的蔗草,而它的功能分為兩層:視頻編碼層VCL 和 網(wǎng)絡(luò)提取層NAL咒彤。
4.1 視頻編碼層VCL(Video Coding Layer)
VCL負(fù)責(zé)有效表示視頻數(shù)據(jù)的內(nèi)容。
H264除了實(shí)現(xiàn)了對(duì)視頻的壓縮處理之外咒精,為了方便網(wǎng)絡(luò)傳輸镶柱,提供了對(duì)應(yīng)的視頻編碼和分片策略;類(lèi)似于網(wǎng)絡(luò)數(shù)據(jù)封裝成IP幀模叙,在H264中將其稱(chēng)為組(gop)歇拆、片(slice)、宏塊(Macroblock)這些一起組成了H264的碼流分層結(jié)構(gòu);H264將其組織成為序列(GOP)范咨、圖片(pictrue)故觅、片(Slice)、宏塊(Macroblock)渠啊、子塊(subblock)五個(gè)層次输吏。
宏塊:視頻編碼的基本單元,h264通常宏塊大小為16x16個(gè)像素替蛉,所以編碼器一般會(huì)對(duì)圖像的寬 高有要求贯溅,需要為16的倍數(shù)。
Slice:條帶躲查,圖像的劃分盗迟,一幀圖像可編碼成一個(gè)或者多個(gè)條帶,每條帶包含整數(shù)個(gè)宏塊熙含。
SPS: 序列參數(shù)集罚缕,包含應(yīng)用于完整視頻序列的語(yǔ)法元素,比如圖像寬怎静,高等邮弹。
PPS: 圖像參數(shù)集,包含應(yīng)用于編碼圖像的語(yǔ)法元素蚓聘,比如量化參數(shù)腌乡,參考幀列表大小等。
4.2 網(wǎng)絡(luò)傳輸層 NAL (Network Abstraction Layer)
NAL定義了數(shù)據(jù)封裝的格式和統(tǒng)一的網(wǎng)絡(luò)接口夜牡,負(fù)責(zé)格式化VCL數(shù)據(jù)并提供頭信息与纽,以保證數(shù)據(jù)適合各種信道和存儲(chǔ)介質(zhì)上的傳輸。
NAL基本單元為NALU塘装,每一個(gè)NALU包含一個(gè)字節(jié)的頭信息和其后的負(fù)載數(shù)據(jù)急迂。
參考文檔
https://zhuanlan.zhihu.com/p/31056455
https://blog.csdn.net/knowledgebao/article/details/86716428
重點(diǎn)鏈接:NAL/NALU詳解可以查閱:
http://www.reibang.com/p/1b3f8187b271
http://www.wendangku.net/doc/039e95757fd5360cba1adb46.html
5. H264壓縮技術(shù) -- 基本原理
附上幾篇文章:
https://blog.csdn.net/knowledgebao/article/details/86716428
https://zhuanlan.zhihu.com/p/31056455
http://www.reibang.com/p/0c296b05ef2a
八、常見(jiàn)編碼器 及 相關(guān)術(shù)語(yǔ)說(shuō)明
8.1 常見(jiàn)編碼器
OpenH264
思科開(kāi)源軟件編解碼器蹦肴,適用于實(shí)時(shí)程序僚碎,例如webrtc。
只支持IP幀類(lèi)型阴幌;
只支持baseline profile勺阐;
動(dòng)態(tài)調(diào)整碼率卷中,幀率,分辨率渊抽;
支持分層編碼SVC蟆豫;
編碼速度快,cpu使用率低懒闷。X264
VideoLAN工作組開(kāi)發(fā)的開(kāi)源編碼器无埃,歷史久遠(yuǎn),適用于各種場(chǎng)景毛雇。
支持IPB幀;
支持多種profile侦镇,level灵疮;
各種配置適合多種場(chǎng)景,例如動(dòng)畫(huà)壳繁,電影等震捣;
cpu占用相對(duì)會(huì)高一點(diǎn);
直播使用的場(chǎng)景預(yù)置為zerolatency闹炉。
8.2 硬編硬解
Android平臺(tái)市面上大部分的芯片廠商的硬編硬解都適配蒿赢,例如:高通,三星Exynos渣触,聯(lián)發(fā)科羡棵,海思等;windows平臺(tái)上支持Intel qsv硬編硬解嗅钻。
不同點(diǎn) | 硬編 | 軟編(普通編碼) |
---|---|---|
編碼方式 | 使用非CPU進(jìn)行編碼皂冰,如顯卡GPU、專(zhuān)用的DSP养篓、FPGA秃流、ASIC芯片等。 | 使用CPU進(jìn)行編碼 |
使用方式 | 性能高柳弄,低碼率下通常質(zhì)量低于軟編碼器舶胀,但部分產(chǎn)品在GPU硬件平臺(tái)移植了優(yōu)秀的軟編碼算法(如X264)的,質(zhì)量基本等同于軟編碼 | 實(shí)現(xiàn)直接碧注、簡(jiǎn)單嚣伐,參數(shù)調(diào)整方便,升級(jí)易萍丐,但CPU負(fù)載重纤控,性能較硬編碼低,低碼率下質(zhì)量通常比硬編碼要好一點(diǎn) |
復(fù)雜程度 | 普通編碼是一種設(shè)計(jì)碉纺,而硬編碼不過(guò)是一種具體的實(shí)現(xiàn) | 普通編碼比硬編碼要復(fù)雜一些船万,對(duì)以后的考慮要周到一些 |
對(duì)比 | 軟編軟解 | 硬件編解碼 |
---|---|---|
開(kāi)銷(xiāo) | 使用cpu,占用率高 | 使用特定硬件(GPU),基本不占用cpu |
延遲 | 延時(shí)較低 | 延時(shí)與硬件有關(guān)刻撒,比較高 |
適應(yīng)性 | 靈活,普適性高 | 適用性窄耿导,部分解碼會(huì)對(duì)碼流有要求 |
畫(huà)質(zhì) | 同等碼率下畫(huà)質(zhì)好 | 同等碼率下畫(huà)質(zhì)稍差 |
8.3 分辨率
分辨率:(矩形)圖片的長(zhǎng)度和寬帶声怔,即圖片的尺寸。影響圖像大小舱呻,與圖像大小成正比醋火;分辨率越高,圖像越大箱吕;分辨率越低芥驳,圖像越小。
分辨率是指視頻畫(huà)面橫向和縱向被切分成多少塊茬高。
區(qū)別 1080P , 3MP ,4K
P 720P 兆旬、1080P 表示的是"視頻像素的總函數(shù)" ,' P ' (Progressive的縮寫(xiě))表示的是"逐行掃描"
K 2K 怎栽、4K 等是表示 "視頻像素的總列數(shù)" 丽猬,4K表示的是視頻有4000列的像素?cái)?shù),具體是3840列或4096列熏瞄。
MP 代表的是像素總數(shù)脚祟,指像素的行數(shù)(P)與列數(shù)(K)相乘后的一個(gè)結(jié)果(百萬(wàn)像素)。
8.4 幀率
幀率 是指每秒圖像的數(shù)量强饮,一幀代表的就是一副靜止的畫(huà)面由桌,連續(xù)的幀就形成了動(dòng)畫(huà)。影響畫(huà)面流暢度邮丰,與畫(huà)面流暢度成正比:幀率越大沥寥,畫(huà)面越流暢;幀率越小柠座,畫(huà)面越有跳動(dòng)感邑雅。幀率就是在1秒鐘時(shí)間里傳輸?shù)膱D片的幀數(shù),也可以理解為圖形處理器每秒鐘能夠刷新幾次妈经。
8.5 碼流 Data Rate ( 碼率 )
碼率 指編碼器每秒編出的數(shù)據(jù)大小淮野,單位是kbps 。
視頻文件在單位時(shí)間內(nèi)使用的數(shù)據(jù)流量吹泡,指把每秒顯示的圖片進(jìn)行壓縮后的數(shù)據(jù)量骤星。影響體積,與體積成正比:碼率越大爆哑,體積越大洞难,碼率越小,體積越小揭朝。(體積=碼率X時(shí)間)
壓縮前的每秒數(shù)據(jù)量 = 幀率 x 分辨率(單位是字節(jié))
壓縮比 = 壓縮前的每秒數(shù)據(jù)量 / 碼率(對(duì)于同一視頻源并采用同一種視頻編碼算法队贱,壓縮比越高色冀,畫(huà)面質(zhì)量越差)
清晰度
在碼率一定的情況下,分辨率與清晰度成反比關(guān)系:分辨率越高柱嫌,圖像越不清晰锋恬,分辨率越低,圖像越清晰编丘。
在分辨率一定的情況下与学,碼率與清晰度成正比關(guān)系,碼率越高嘉抓,圖像越清晰索守;碼率越低,圖像越不清晰抑片。
好文章理解分辨率卵佛、幀率和碼率三者之間的關(guān)系:https://blog.csdn.net/qq_39759656/article/details/80701965
直播場(chǎng)景下,常見(jiàn)的視頻配置的推薦如下
分辨率 p | 幀率 fps | 碼率 Kbps |
---|---|---|
240*320 | 15 | 300 |
360*640 | 15 | 600 |
480*640 | 15 | 800 |
540*960 | 20 | 1200 |
720*1280 | 20 | 1500 |
1080*1920 | 30 | 3000 |
都看到這里了蓝丙,點(diǎn)個(gè)贊唄 0.0