天天看點

FFMPEG 視訊解碼基礎總結

音視訊解碼流程

原理上講: 我們所看到的有聲視訊,其實是視訊和音頻資料同步的結果.

視訊的播放過程

  • 封裝視訊格式(flv,mp4)等,解封裝 ,
  • 變為 視訊壓縮的資料(H.264),
  • 再經過解碼,變成原生的像素資料(YUV),
  • 最後在畫布載體(surfaceview等),一幀幀繪制的過程.

音頻的播放過程

  • 封裝視訊格式(MP3,wma)等,解封裝 ,
  • 變為 視訊壓縮的資料(AAC,MP3),
  • 再經過解碼,變成原生的像素資料(PCM),
  • 最後重新采樣播放的過程.
FFMPEG 視訊解碼基礎總結

相關原理知識工具

相關檢視工具

  1. 封裝格式:Elecard Format Analyzer
  2. 視訊編碼資料:Elecard Stream Eye
  3. 視訊像素資料:YUV Player
  4. 音頻采樣資料:Adobe Audition

視訊編碼資料

  • 視訊編碼的作用
    • 将視訊像素資料(RGB,YUV等)壓縮成為視訊碼流,進而降

      低視訊的資料量(目前直播就是如此)。

  • 常見的視訊編碼格式
    FFMPEG 視訊解碼基礎總結
  • H.264格式簡介
    • 資料由大小不固定的NALU構成

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

  • H.264壓縮方法
    • 比較複雜。包含了幀内預測、幀間預測、熵編碼、環路濾波等環節

      構成。本課程不對其中的算法做過多介紹。

      . 可以将圖像資料壓縮100倍以上。

視訊像素資料

  • 視訊像素資料作用
    • 儲存了螢幕上每個像素點的像素值。
  • 格式
    • 常見的像素資料格式有RGB24, RGB32, YUV420P,YUV422P,

      YUV444P等。壓縮編碼中一般使用的是YUV格式的像素資料,最為常

      見的格式為YUV420P。

  • 特點
    • 視訊像素資料體積很大,一般情況下1小時高清視訊的RGB24

      格式的資料體積為:

      3600*25*1920*1080*3=559.9GByte

      PS:這裡假定幀率為25Hz,取樣精度8bit。

  • YUV格式像素資料檢視工具
    • YUV Player
      FFMPEG 視訊解碼基礎總結

音頻編碼資料

  • 音頻編碼的作用
    • 将音頻采樣資料(PCM等)壓縮成為音頻碼流,進而降低音

      頻的資料量。

  • AAC格式簡介
    • 資料由大小不固定的ADTS(Audio Data Transport Stream 音頻資料傳輸流)構成.

音頻采樣資料

  • 音頻采樣資料作用
    • 儲存了音頻中每個采樣點的值。
  • 特點
    • 音頻采樣資料體積很大,一般情況下一首4分鐘的PCM格式的

      歌曲體積為:

      4*60*44100*2*2=42.3MByte

      PS:這裡假定采樣率為44100Hz,采樣精度為16bit。

  • 音頻采樣資料檢視工具:Adobe Audition
  • PCM格式簡介
    • 單聲道的情況下按照順序存儲每個采樣點的資料。
    • 雙聲道的情況下按照“左右、左右”的順序存儲每個采樣點兩個聲

      道的資料。