1.音影片相關
1.一些基本資料格式
- 封裝格式:MP4,RMVB,TS,FLV,AVI
- 影片編碼資料:H.264,MPEG2,VC-1
- 音訊編碼資料:AAC,MP3,AC-3
- 影片畫素資料:YUV420P,RGB
- 音訊取樣資料:PCM
2.播放影片檔案的流程
3.編碼格式及工具
1)封裝格式:影片碼流和音訊碼流按照一定的格式儲存在一個檔案中 分析工具:Elecard Format Analyzer
舉例:
MPEG2-TS:
*不含檔案頭,由資料大小固定(188Byte)的TS Packet構成
FLV格式:
*包含檔案頭,資料由大小不固定的Tag構成
2)影片編碼資料
影片編碼作用:將影片畫素資料(RGB,YUV等)壓縮為影片碼流,從而降低影片的資料量。 工具:Elecard Stream Rye
舉例:
H.264格式:
*資料由大小不固定的NALU構成
*最常見,1個NALU儲存了1幀畫面的壓縮編碼後的資料
*H.264壓縮方式特點:
-比較複雜。
-可以將圖象資料壓縮一百倍以上
3)音訊編碼資料
音訊編碼:將音訊取樣資料(PCM等)壓縮成為音訊碼流,從而降低音訊的資料量。
舉例:
AAC格式:
*資料由大小不固定的ADTS構成
*特點
-比較複雜
-音訊資料壓縮10倍以上
4)影片畫素資料
*作用:儲存了螢幕上每個畫素點的畫素值
*特點:影片畫素資料體積很大
舉例:
*RGB格式
儲存每個畫素點的RGB資訊,BMP檔案儲存的就是RGB格式的畫素資料。
*YUV資訊
Y只包含亮度資訊,UV包含色度資訊,uv各佔Y的四分之一
5)音訊取樣資料:
*儲存了音訊中每個取樣點的值,體積很大, 工具:Adobe Audition
舉例:
PCM格式:
*單聲道按順序儲存每個取樣點的資料
*雙聲道按照“左右,左右。。”的順尋儲存每個取樣點的兩個聲道的資料。
2.FFmpeg
*背景
使用廣泛:
*影片播放器和轉碼器的核心
特點:
*基於命令列
*開源
命令列工具
1.ffmpeg.exe
用於影片的轉碼
ffmpeg -i {輸入檔案路徑} -b :v {輸出影片位元速率} {輸出檔案路徑}
舉個例子: ffmpeg -i input.avi -b:v 640k output.ts
2.ffplay.exe的使用
用於影片的播放
ffplay [檔案路徑]
q/esc 退出 p/空格暫停 f 全屏 滑鼠點選螢幕:跳轉到指定位置
3.影片解碼
解碼:
*壓縮解碼資料-> 畫素資料
舉例:H.264===> "H.264碼流-> YUV"
一般解碼流程:
封裝格式---------->提取影片碼流------> 解碼
舉例:MKV =====> "MKV-> H.264碼流_> YUV"
4.類庫
avcodec:編解碼(最重要)
avformat:封裝格式處理
avfilter:濾鏡特效處理
avdevice:各種裝置的輸入輸出
avutil:工具庫(大部分庫都需要這個庫的支援)
postproc:後加工
swresample:音訊取樣資料格式轉換
swscale:影片畫素資料格式轉換
4.1 FFmpeg解碼流程
4.1 FFmpeg解碼核心資料結構