最近在讀 《MPEG-4/H.264視頻編解碼工程實(shí)踐》, 本身是視頻行業(yè)從業(yè)人員阅羹,同時(shí)也是開發(fā)人員,所以對(duì)音視頻流媒體這塊很感興趣牺丙,最近一直在搞ffmpeg編程(C/iOS端)舟舒。
[MPEG-4/H.264視頻編解碼工程實(shí)踐]第一章總結(jié)
我們目前看到的音視頻,基本都是有損編碼(不可逆)的恐似,但是憑借我們?nèi)庋蹘缀鹾茈y察覺出來這種殘差;視頻是由于一幀一幀的信息組合而成傍念,而為了盡可能的壓縮視頻矫夷,某些幀之間是有預(yù)測(cè)和依賴的關(guān)系,前后兩幀變化較小的地方是光滑并且連續(xù)的捂寿,而差別較大的地方是作為幀間運(yùn)動(dòng)的重點(diǎn)計(jì)算對(duì)象區(qū)域口四。
很有趣的是孵运,人體肉眼對(duì)亮度比色度更加感興趣秦陋,這一切都是驅(qū)動(dòng)編碼和解碼發(fā)展的方向。
目前編碼算法標(biāo)準(zhǔn)還是以ISO和ITU兩大組織制定的治笨,但是他們只是制定了算法標(biāo)準(zhǔn)驳概,并沒有給出具體的實(shí)現(xiàn)工程赤嚼,所以才會(huì)有各種我們現(xiàn)在所用的編解碼基礎(chǔ)算法工程。
視頻解碼實(shí)則是編碼的逆向過程顺又,只不過多了熵解碼(對(duì)于h263等的熵編碼基本是用霍夫曼編碼 更卒,詳見我另外一篇文章:http://www.reibang.com/p/8b7410e242c6
);
具體解碼過程主要是:熵解碼
| 反量化
| 反變換
| 運(yùn)動(dòng)補(bǔ)償算法
| 最終處理
稚照。
包括編碼操作蹂空,里面涉及到 搜索匹配(三部搜索 etc.. 鉆石搜索目前最佳)、運(yùn)動(dòng)估計(jì)果录、 變換(新維度去分配時(shí)域和空域的能量上枕,便于壓縮,主要針對(duì)圖像殘差)弱恒、量化辨萍、熵編碼(持續(xù)壓縮分配符號(hào)信息)
MPEG-4最早第一代壓縮編碼算法,主要以宏塊的方式預(yù)測(cè)返弹,如果壓縮比較高锈玉,則會(huì)導(dǎo)致出現(xiàn)嚴(yán)重的塊效應(yīng)
;
這種情況我之前在做視頻圖像處理的時(shí)候义起,對(duì)圖像進(jìn)行二值化過程中拉背,閾值以塊為單位進(jìn)行計(jì)算,在較小尺寸圖片或某些變化度交大的交界處會(huì)出現(xiàn)嚴(yán)重的
塊效應(yīng)
并扇。
所以之后的開進(jìn)有了一個(gè)非常有趣的現(xiàn)象去团! 才用類似于圖像分割:前景后景分割方式去處理,這種想法很超前誒~ 在當(dāng)年硬件設(shè)備普遍不是非常給力情況下(機(jī)器學(xué)習(xí)無法大力施展)依然得到了不錯(cuò)的效果穷蛹;不過只能說不錯(cuò)土陪,不能說非常成熟。
MPEG-4才用I-VOP/P-VOP/B-VOP (VOP是VO在某一時(shí)刻的表現(xiàn)肴熏,主要為時(shí)域在空域的展現(xiàn))三中對(duì)象來表示不同幀類型鬼雀,我們?cè)贖264中常見的。
解碼相關(guān)蛙吏。
h264的NAL網(wǎng)絡(luò)抽象層源哩,主要為網(wǎng)絡(luò)傳輸所進(jìn)行的一層封裝,類似于我們常用的直播等服務(wù)鸦做,可以根據(jù)自己不同需求去定制励烦。而視頻流媒體僅僅是VCL層(這些詳細(xì)說來就太多了,具體在數(shù)書里和資料有體現(xiàn)泼诱,先記在這里坛掠,開發(fā)過程中也會(huì)用到)。
解碼的過程和編碼很類似,也會(huì)涉及到幀內(nèi)預(yù)測(cè)屉栓,幀間預(yù)測(cè)等操作舷蒲。
業(yè)內(nèi)目前做安防等行業(yè),對(duì)于硬件內(nèi)是常有一塊編解碼芯片友多,常用ASIC做基礎(chǔ)牲平,但是缺點(diǎn)是不可以升級(jí)改動(dòng),燒錄的程序不會(huì)重新修改(相比其他可編程芯片會(huì)廉價(jià)一些)域滥。
總結(jié)
這一章還是對(duì)于音視頻的基礎(chǔ)算法和背景會(huì)有一些了解纵柿,但是具體的內(nèi)容還是要看往后的內(nèi)容來補(bǔ)充。