1. 程式人生 > >跟著雷神學FFmpeg(一)

跟著雷神學FFmpeg(一)

引言

在網上看到很多的資料,都沒有雷神講的好,下面以一個初學者的角度,去總結FFmpeg,對音視訊沒有任何基礎的做一些基礎知識的掃盲。
並且做一些C++的demo,以供學習

目錄

  • 封裝格式(MP4,rmvb)
  • 視訊編碼資料(H.246)
  • 音訊編碼資料(AAC)
  • 視訊畫素資料(顯示卡顯示,RGB)
  • 音訊取樣資料(PCM)

視訊播放器原理

在這裡插入圖片描述

  • 藍色表示解碼操作
  • 當我們開啟視訊檔案,就要分析有哪些視訊流(壓縮資料,體積小),音訊流。所以要解分裝格式
  • 視訊畫素資料-YUV
  • 音訊取樣資料-PCM
  • 視音訊同步

常用的播放器

  • VLC,Mplayer,ffmplay

資訊檢視工具

  • 綜合資訊檢視:MediaInfo
  • 二進位制資訊檢視:ULtraEdit

封裝格式

在這裡插入圖片描述

  • 封裝格式分析工具:ELecard Format Analyzer

在這裡插入圖片描述

  • MPEF2-TS 數字電視用到的格式,分割是188Byte大小,沒有檔案頭,檔案部分損壞,可以繼續播放
  • FLV格式:如果頭壞掉,就廢了。

視訊編碼資料

在這裡插入圖片描述

  • 把能看的資料,壓縮成視訊碼流,高清視訊碼流非常的大
  • 視訊編碼分析工具:Elecard Stream Eye
    現在一般接觸的視訊。90%H.264, 現在比較普及

在這裡插入圖片描述

  • H.264格式:一個畫面就是NALU,作為單元儲存起來。
  • H.264壓縮方法:比較複雜,
    Elecard Stream Eye 的使用
    在這裡插入圖片描述
  • 紅色的幀: I 幀 , 藍色的幀:P幀 ,綠色的幀:B幀
  • I 幀的體積特別大,
  • P幀,當運動向量不是特別大的時候,不會太大
  • B幀參考前後幀

音訊解碼資料

在這裡插入圖片描述

  • CD匯出和WAV音訊是基本上沒有壓縮的
  • AC-3 支援的聲道比較多,電影中
  • 大部分都是使用AAC的編碼格式
  • wav是一種無損的音訊檔案格式,pcm是沒有壓縮的編碼方式

在這裡插入圖片描述

  • AAC音訊壓縮10幾倍,數字訊號處理

視訊畫素資料

在這裡插入圖片描述

  • YUV420P 是常用的格式,程式設計中也是常用的,一小時佔用500多個G
    在這裡插入圖片描述

音訊取樣資料

在這裡插入圖片描述

  • 播放器對連續的波進行取樣,然後儲存下來
  • 4604410022=42.3MByte ,取樣率44100Hz,取樣率16bit,兩個位元組:秒x取樣率 x兩個聲道x16位兩個位元組
  • 檢視工具 Adobe Audition
    在這裡插入圖片描述

PCM

在這裡插入圖片描述