跟著雷神學FFmpeg(一)
阿新 • • 發佈:2018-11-17
引言
在網上看到很多的資料,都沒有雷神講的好,下面以一個初學者的角度,去總結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