1. 程式人生 > >各種音視訊編解碼學習詳解之 編解碼學習筆記(一):基本概念

各種音視訊編解碼學習詳解之 編解碼學習筆記(一):基本概念

最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit/p/3651270.html。若讀過@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,就不用向後看啦

媒體業務是網路的主要業務之間。尤其移動網際網路業務的興起,在運營商和應用開發商中,媒體業務份量極重,其中媒體的編解碼服務涉及需求分析、應用開發、釋放license收費等等。最近因為專案的關係,需要理清媒體的codec,比較搞的是,在豆丁網上看運營商的規範 標準,同一運營商同樣的業務在不同文件中不同的要求,而且有些要求就我看來應當是歷史的延續,也就是現在已經很少採用了。所以豆丁上看不出所以然,從 wiki上查。中文的wiki資訊量有限,很短,而wiki的英文內容內多,刪減版也減肥得太過。我在網上還看到一個山寨的中文wiki,長得很像,紅色的,叫“天下維客”。wiki的中文還是很不錯的,但是閱讀後建議再閱讀英文。

  我對媒體codec做了一些整理和總結,資料來源於wiki,小部分來源於網路部落格的收集。網友資料我們將給出來源。如果資料已經轉手幾趟就沒辦法,雁過留聲,我們只能給出某個軌跡。

基本概念

編解碼

  編解碼器(codec)指的是一個能夠對一個訊號或者一個數據流進行變換的裝置或者程式。這裡指的變換既包括將 訊號或者資料流進行編碼(通常是為了傳輸、儲存或者加密)或者提取得到一個編碼流的操作,也包括為了觀察或者處理從這個編碼流中恢復適合觀察或操作的形式的操作。編解碼器經常用在視訊會議和流媒體等應用中。

容器

  很多多媒體資料流需要同時包含音訊資料和視訊資料,這時通常會加入一些用於音訊和視訊資料同步的元資料,例如字幕。這三種資料流可能會被不同的程式,程序或者硬體處理,但是當它們傳輸或者儲存的時候,這三種資料通常是被封裝在一起的。通常這種封裝是通過視訊檔案格 式來實現的,例如常見的*.mpg, *.avi, *.mov, *.mp4, *.rm, *.ogg or *.tta. 這些格式中有些只能使用某些編解碼器,而更多可以以容器的方式使用各種編解碼器。

  FourCC全稱Four-Character Codes,是由4個字元(4 bytes)組成,是一種獨立標示視訊資料流格式的四位元組,在wav、avi檔案之中會有一段FourCC來描述這個AVI檔案,是利用何種codec來 編碼的。因此wav、avi大量存在等於“IDP3”的FourCC。

  視訊是現在電腦中多媒體系統中的重要一環。為了適應儲存視訊的需要,人們設定了不同的視訊檔案格式來把視訊和音訊放在一個檔案中,以方便同時回放。視訊檔實際上都是一個容器裡面包裹著不同的軌道,使用的容器的格式關係到視訊檔的可擴充套件性。

引數介紹

取樣率

  取樣率(也稱為取樣速度或者取樣頻率)定義了每秒從連續訊號中提取並組成離散訊號的取樣個數,它用赫茲(Hz)來表示。取樣頻率的倒數叫作取樣週期或採樣時間,它是取樣之間的時間間隔。注意不要將取樣率與位元率(bit rate,亦稱“位速率”)相混淆。

  取樣定理表明取樣頻率必須大於被取樣訊號頻寬的兩倍,另外一種等同的說法是奈奎斯特頻率必須大於被取樣訊號的頻寬。如果訊號的頻寬是 100Hz,那麼為了避免混疊現象取樣頻率必須大於200Hz。換句話說就是取樣頻率必須至少是訊號中最大頻率分量頻率的兩倍,否則就不能從訊號取樣中恢復原始訊號。

  對於語音取樣:

  • 8,000 Hz - 電話所用取樣率, 對於人的說話已經足夠
  • 11,025 Hz
  • 22,050 Hz - 無線電廣播所用取樣率
  • 32,000 Hz - miniDV 數碼視訊 camcorder、DAT (LP mode)所用取樣率
  • 44,100 Hz - 音訊 CD, 也常用於 MPEG-1 音訊(VCD, SVCD, MP3)所用取樣率
  • 47,250 Hz - Nippon Columbia (Denon)開發的世界上第一個商用 PCM 錄音機所用取樣率
  • 48,000 Hz - miniDV、數字電視、DVD、DAT、電影和專業音訊所用的數字聲音所用取樣率
  • 50,000 Hz - 二十世紀七十年代後期出現的 3M 和 Soundstream 開發的第一款商用數字錄音機所用取樣率
  • 50,400 Hz - 三菱 X-80 數字錄音機所用所用取樣率
  • 96,000 或者 192,000 Hz - DVD-Audio、一些 LPCM DVD 音軌、Blu-ray Disc(藍光碟)音軌、和 HD-DVD (高清晰度 DVD)音軌所用所用取樣率
  • 2.8224 MHz - SACD、 索尼 和 飛利浦 聯合開發的稱為 Direct Stream Digital 的 1 位 sigma-delta modulation 過程所用取樣率。

  在模擬視訊中,取樣率定義為幀頻和場頻,而不是概念上的畫素時鐘。影象取樣頻率是感測器積分週期的迴圈速度。由於積分週期遠遠小於重複所需時間,取樣頻率可能與取樣時間的倒數不同。

  • 50 Hz - PAL 視訊
  • 60 / 1.001 Hz - NTSC 視訊

  當模擬視訊轉換為數字視訊的時候,出現另外一種不同的取樣過程,這次是使用畫素頻率。一些常見的畫素取樣率有:

  • 13.5 MHz - CCIR 601、D1 video

解析度

  解析度,泛指量測或顯示系統對細節的分辨能力。此概念可以用時間、空間等領域的量測。日常用語中之解析度多用於影象的清晰度。解析度越高代表影象品質越好,越能表現出更多的細節。但相對的,因為紀錄的資訊越多,檔案也就會越大。目前個人電腦裡的影象,可以使用影象 處理軟體,調整影象的大小、編修照片等。例如 photoshop,或是photoimpact等軟體。

 影象解析度 :

  用以描述影象細節分辨能力,同樣適用於數字影象、膠捲影象、及其他型別影象。常用'線每毫米'、 '線每英吋'等來衡量。通常,“解析度”被表示成每一個方向上的畫素數量,比如640x480等。而在某些情況下,它也可以同時表示成“每英吋畫素” (pixels per inch,ppi)以及圖形的長度和寬度。比如72ppi,和8x6英吋。

 視訊解析度 :

各種電視規格解析度比較視 頻的畫面大小稱為“解析度”。數位視訊以畫素為度量單位,而類比視訊以水平掃瞄線數量為度量單位。標清電視訊號解析度為 720/704/640x480i60(NTSC)或768/720x576i50(PAL/SECAM)。新的高清電視(HDTV)解析度可達 1920x1080p60,即每條水平掃瞄線有1920個畫素,每個畫面有1080條掃瞄線,以每秒鐘60張畫面的速度播放。

畫面更新率fps

  Frame rate中文常譯為“畫面更新率”或“幀率”,是指視訊格式每秒鐘播放的靜態畫面數量。典型的畫面更新率由早期的每秒6或8張(frame persecond,簡稱fps),至現今的每秒120張不等。PAL (歐洲,亞洲,澳洲等地的電視廣播格式) 與 SECAM (法國,俄國,部分非洲等地的電視廣播格式) 規定其更新率為25fps,而NTSC (美國,加拿大,日本等地的電視廣播格式) 則規定其更新率為29.97 fps。電影膠捲則是以稍慢的24fps在拍攝,這使得各國電視廣播在播映電影時需要一些複雜的轉換手續(參考Telecine轉換)。要達成最基本的視覺暫留效果大約需要10fps的速度。

壓縮方法

有失真壓縮和無失真壓縮

  在視訊壓縮中有損(Lossy )和無損(Lossless)的概念與靜態影象中基本類似。無失真壓縮也即壓縮前和解壓縮後的資料完全一致。多數的無失真壓縮都採用RLE行程編碼演算法。有損 壓縮意味著解壓縮後的資料與壓縮前的資料不一致。在壓縮的過程中要丟失一些人眼和人耳所不敏感的影象或音訊資訊,而且丟失的資訊不可恢復。幾乎所有高壓縮的演算法都採用有失真壓縮,這樣才能達到低資料率的目標。丟失的資料率與壓縮比有關,壓縮比越小,丟失的資料越多,解壓縮後的效果一般越差。此外,某些有損壓 縮演算法採用多次重複壓縮的方式,這樣還會引起額外的資料丟失。

  • 無損格式,例如WAV,PCM,TTA,FLAC,AU,APE,TAK,WavPack(WV)
  • 有損格式,例如MP3,Windows Media Audio(WMA),Ogg Vorbis(OGG),AAC

幀內壓縮和幀間壓縮

  幀內(Intraframe)壓縮也稱為空間壓縮 (Spatial compression)。當壓縮一幀影象時,僅考慮本幀的資料而不考慮相鄰幀之間的冗餘資訊,這實際上與靜態影象壓縮類似。幀內一般採用有失真壓縮演算法,由於幀內壓縮時各個幀之間沒有相互關係,所以壓縮後的視訊資料仍可以以幀為單位進行編輯。幀內壓縮一般達不到很高的壓縮。

  採用幀間(Interframe)壓縮是基於許多視訊或 動畫的連續前後兩幀具有很大的相關性,或者說前後兩幀資訊變化很小的特點。也即連續的視訊其相鄰幀之間具有冗餘資訊,根據這一特性,壓縮相鄰幀之間的冗餘量就可以進一步提高壓縮量,減小壓縮比。幀間壓縮也稱為時間壓縮(Temporalcompression),它通過比較時間軸上不同幀之間的資料進行壓縮。幀間壓縮一般是無損的。幀差值(Frame differencing)演算法是一種典型的時間壓縮法,它通過比較本幀與相鄰幀之間的差異,僅記錄本幀與其相鄰幀的差值,這樣可以大大減少資料量。

對稱編碼和不對稱編碼

  對稱性(symmetric)是壓縮編碼的一個關鍵特 徵。對稱意味著壓縮和解壓縮佔用相同的計算處理能力和時間,對稱演算法適合於實時壓縮和傳送視訊,如視訊會議應用就以採用對稱的壓縮編碼演算法為好。而在電子出版和其它多媒體應用中,一般是把視訊預先壓縮處理好,爾後再播放,因此可以採用不對稱(asymmetric)編碼。不對稱或非對稱意味著壓縮時需要花費大量的處理能力和時間,而解壓縮時則能較好地實時回放,也即以不同的速度進行壓縮和解壓縮。一般地說,壓縮一段視訊的時間比回放(解壓縮)該視訊的時間 要多得多。例如,壓縮一段三分鐘的視訊片斷可能需要10多分鐘的時間,而該片斷實時回放時間只有三分鐘。

除wiki外的資料來源:http://tech.lmtw.com/csyy/Using/200411/3142.html