1. 程式人生 > >音視頻處理之編碼介紹20180224

音視頻處理之編碼介紹20180224

自己的 版本 兩種 inf web 圖片 article dts gpo

一、視頻編碼數據

1.概述

視頻編碼的主要作用是將視頻像素數據(RGB,YUV等)壓縮成為視頻碼流,從而降低視頻的數據量。如果視頻不經過壓縮編碼的話,體積通常是非常大的,一部電影可能就要上百G的空間。視頻編碼是視音頻技術中最重要的技術之一。視頻碼流的數據量占了視音頻總數據量的絕大部分。高效率的視頻編碼在同等的碼率下,可以獲得更高的視頻質量。

視頻編碼的簡單原理可以參考:視頻壓縮編碼和音頻壓縮編碼的基本原理

註:視頻編碼技術在整個視音頻技術中應該是最復雜的技術。如果沒有基礎的話,可以先買一些書看一下原理,比如說《現代電視原理》《數字電視廣播原理與應用》(本科的課本)中的部分章節。

主要視頻編碼一覽

名稱

推出機構

推出時間

目前使用領域

HEVC(H.265)

MPEG/ITU-T

2013

研發中

H.264

MPEG/ITU-T

2003

各個領域

MPEG4

MPEG

2001

不溫不火

MPEG2

MPEG

1994

數字電視

VP9

Google

2013

研發中

VP8

Google

2008

不普及

VC-1

Microsoft Inc.

2006

微軟平臺

由表可見,有兩種視頻編碼方案是最新推出的:VP9和HEVC。目前這兩種方案都處於研發階段,還沒有到達實用的程度。當前使用最多的視頻編碼方案就是H.264。

2.視頻編碼分析工具

Elecard Stream Eye查看視頻編碼格式(也叫碼流分析工具,可分析h264),如下圖:

技術分享圖片

紅色的表示I幀,藍色的表示P幀,綠色的表示B幀,方塊表示宏塊的劃分方式,劃分為16x16的小塊,每塊都有不同的類型(用不同的顏色標識)

左側坐標表示數據量

I幀不依賴其他的幀,只壓縮當前畫面的數據。

P幀只會存和紅色框(運動矢量)不一樣的信息,和前面I幀不一樣的信息。

B幀還會存和綠色框(運動矢量,和後面不一樣的)不一樣的信息,會參考前後的幀

3.編碼標準

3.1. 主流編碼標準

H.264僅僅是一個編碼標準,而不是一個具體的編碼器,H.264只是給編碼器的實現提供參照用的。

基於H.264標準的編碼器還是很多的,究竟孰優孰劣?可參考:MSU出品的 H.264編碼器比較(2011.5)

在學習視頻編碼的時候,可能會用到各種編碼器(實際上就是一個exe文件),他們常用的編碼命令可以參考:各種視頻編碼器的命令行格式

學習H.264最標準的源代碼,就是其官方標準JM了。但是要註意,JM速度非常的慢,是無法用於實際的:H.264參考軟件JM12.2RC代碼詳細流程

實際中使用最多的就是x264了,性能強悍(超過了很多商業編碼器),而且開源。其基本教程網上極多,不再贅述。編碼時候可參考:x264編碼指南——碼率控制。編碼後統計值的含義:X264輸出的統計值的含義(X264 Stats Output)

Google推出的VP8屬於和H.264同一時代的標準。總體而言,VP8比H.264要稍微差一點。有一篇寫的很好的VP8的介紹文章:深入了解 VP8。除了在技術領域,VP8和H.264在專利等方面也是打的不可開交,可參考文章:WebM(VP8) vs H.264

此外,我國還推出了自己的國產標準AVS,性能也不錯,但目前比H.264還是要稍微遜色一點。不過感覺我國在視頻編解碼領域還算比較先進的,可參考:視頻編碼國家標準AVS與H.264的比較(節選))

近期又推出了AVS新一代的版本AVS+,具體的性能測試還沒看過。不過據說AVS+得到了國家政策上非常強力的支持。

3.2. 下一代編碼標準

下一代的編解碼標準就要數HEVC和VP9了。VP9是Google繼VP8之後推出的新一代標準。VP9和HEVC相比,要稍微遜色一些。它們的對比可參考:(1)HEVC與VP9編碼效率對比 (2)HEVC,VP9,x264性能對比

HEVC在未來擁有很多大的優勢,可參考:HEVC將會取代H.264的原因

學習HEVC最標準的源代碼,就是其官方標準HM了。其速度比H.264的官方標準代碼又慢了一大截,使用可參考:HEVC學習—— HM的使用

未來實際使用的HEVC開源編碼器很有可能是x265,目前該項目還處於發展階段,可參考:x265(HEVC編碼器,基於x264)介紹。x265的使用可以參考:HEVC(H.265)標準的編碼器(x265,DivX265)試用

主流以及下一代編碼標準之間的比較可以參考文章:視頻編碼方案之間的比較(HEVC,H.264,MPEG2等)

此外,在碼率一定的情況下,幾種編碼標準的比較可參考:限制碼率的視頻編碼標準比較(包括MPEG-2,H.263, MPEG-4,以及 H.264)

結果大致是這樣的:

HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2。

截了一些圖,可以比較直觀的了解各種編碼標準:

HEVC碼流簡析:HEVC碼流簡單分析

H.264碼流簡析:H.264簡單碼流分析

MPEG2碼流簡析:MPEG2簡單碼流分析

以上簡析使用的工具:視頻碼流分析工具

雷神做的小工具: H.264碼流分析器

4.H264格式簡介

數據由大小不固定的NALU構成

最常見的情況下,1個NALU存儲了1幀畫面的壓縮編碼後的數據。

參考:視音頻數據處理入門:H.264視頻碼流解析

二、音頻編碼數據

1.概述

音頻編碼的主要作用是將音頻采樣數據(PCM等)壓縮成為音頻碼流,從而降低音頻的數據量。音頻編碼也是互聯網視音頻技術中一個重要的技術。但是一般情況下音頻的數據量要遠小於視頻的數據量,因而即使使用稍微落後的音頻編碼標準,而導致音頻數據量有所增加,也不會對視音頻的總數據量產生太大的影響。高效率的音頻編碼在同等的碼率下,可以獲得更高的音質。

音頻編碼的簡單原理可以參考:視頻壓縮編碼和音頻壓縮編碼的基本原理

主要音頻編碼一覽

名稱

推出機構

推出時間

目前使用領域

AAC

MPEG

1997

各個領域(新)

AC-3

Dolby Inc.

1992

電影

MP3

MPEG

1993

各個領域(舊)

WMA

Microsoft Inc.

1999

微軟平臺

由表可見,近年來並未推出全新的音頻編碼方案,可見音頻編碼技術已經基本可以滿足人們的需要。音頻編碼技術近期絕大部分的改動都是在MP3的繼任者——AAC的基礎上完成的。

2.編碼標準

這些編碼標準之間的比較可以參考文章:音頻編碼方案之間音質比較(AAC,MP3,WMA等)

結果大致是這樣的:

AAC+ > MP3PRO > AAC> RealAudio > WMA > MP3

AAC格式的介紹:AAC格式簡介

AAC幾種不同版本之間的對比:AAC規格(LC,HE,HEv2)及性能對比

AAC專利方面的介紹:AAC專利介紹

此外杜比數字的編碼標準也比較流行,但是貌似比最新的AAC稍為遜色:AC-3技術綜述

雷神做的小工具: AAC格式分析器

3.AAC格式簡介

數據由大小不固定的ADTS構成

類似h264的地位,目前大多數都是使用aac格式

參考:視音頻數據處理入門:AAC音頻碼流解析

三、參考的原文

http://blog.csdn.net/leixiaohua1020/article/details/18893769

音視頻處理之編碼介紹20180224