FFMPEG基本入門

1.前言

  FFMPEG是特別強大的專門用於處理音視頻的開源庫。可以使用它的API對音視頻進行處理,也可以使用它提供的工具,如ffmpeg(編解碼工具),ffplay(播放器),ffprobe(內容分析工具),來編輯你的音視頻文件。

2.FFmpeg基本概念

  音、視頻流:在音視頻領域,我們把一路音/視頻稱爲一路流。如我們小時候經常使用VCD美國大片時,在裏邊可以選英語和國語,其實就是CD視頻文件中存放了兩路音頻流,用戶可以選擇一路進行播放。

  容器:我們一般把MP4、FLV、MOV等文件稱之爲容器。也就是這些常用格式文件中,可以存放多路音頻文件。以MP4爲例,就可以存放一路視頻流,多路音頻流,多路字幕流。

  channel:channel是音頻中的概念,稱之爲聲道。在一路音頻流中,可以有單聲道,雙聲道或立體聲。

3.ffmpeg工作流程

  ffmpeg的主要工作流程,具體如下:

     1. 解封裝(Demuxing)
     2. 解碼(Decoding)
     3. 編碼(Encoding)
     4. 封裝(Muxing)

  其中需要經過6個步驟,具體如下:
    1).讀取輸入源
    2).進行音視頻解封裝
    3).解碼每一幀音視頻數據
    4).編碼每一幀音視頻數據
    5).進行音視頻的重新封裝
    6).輸出目標

  ffmpeg整體處理的工作流程和步驟圖:

  由圖的工作流程可以看出,ffmpeg首先讀取輸入源;然後通過Demuxer將音視頻包進行解封裝,這個動作通過調用libavformat中的接口即可實現;接下來通過Decoder進行解碼,將音視頻通過Decoder解包成爲YVU或者PCM這樣的數據,Decoder通過libavcodec中的接口即可實現;然後通過Encoder將對應的數據進行編碼,編碼可以通過libavcodec中的接口來實現;接下來將編碼後的音視頻數據包通過Muxer進行封裝,Muxer封裝通過libavformat中的接口即可實現,輸出稱爲輸出流。

4.FFmpeg目錄及其作用

  libavcodec:提供一系列編碼器的實現。
  libavformat:實現在流協議,容器格式及其IO訪問。
  libavfilter:包括了hash器,解碼器和各類工具函數。
  libavfilter:提供了各種音視頻過濾器。
  libavdevice:提供了訪問捕獲設備和回訪設備的藉口。
  libwresample:實現了婚音和重採樣。
  libswscale:實現了色彩轉換和縮放功能。

5.FFmpeg命令分類

  1.基本信息查詢
  2.錄製
  3.分解/複用
  4.處理原始數據
  5.濾鏡
  6.切割與合併
  7.圖/視互轉
  8.直播相關

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章