音影片相關

肆空界發表於2024-08-03

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解碼核心資料結構

相關文章