ffmpeg格式轉換基礎知識

1. 媒體格式的介紹編碼

  文件格式:特殊的文件類型,用來存儲音頻或視頻數據。一些類型能夠用來存儲多條流數據,這些叫作容器。視頻文件格式通常包含視頻流和音頻流。命令行

  媒體容器:特殊的文件格式,用來存儲多條流數據和相關元數據的。音頻和視頻是能夠被編碼和解碼的,容器能夠將這些音頻流和視頻流存儲在一個文件裏面。code

         有些容器只能存儲音頻,好比AIFF、WAV、XMF等等。有些只能存儲圖片,好比TIFF。大部分只能夠同時存儲音頻】視頻、字幕、元數據等等。orm

       

    若是隻是容器改變,編碼沒改,能夠使用-c  copy參數或-c:a  copy參數或-c:v  copy參數視頻

      好比:ffmpeg  -i  input.avi  -q  1  -c  copy output.movblog

2. 轉碼和轉換圖片

  使用ffmpeg對輸入源處理而後輸出的過程叫作轉碼。轉碼能夠改變文件格式,或者文件格式不變,只是更改其餘數據。轉碼過程能夠分爲下面幾個階段:ci

    1)demuxing解封裝:ffmpeg根據輸入源的文件擴展名來選擇最佳的解封裝器(在libavformat庫裏面)。解封裝後生成編碼狀態的數據包、即壓縮狀態的數據包。(文件file ——> 數據包data package)get

    2)decoding解碼:經過適當的解碼器將步驟1裏面的數據包解碼爲未壓縮的數據幀。若是使用-c copy或-codec copy,將不會有解碼這個步驟,固然也就不會有下面的編碼這個步驟了。(數據包data package ——> 數據幀frame)input

    3)optional filtering可選的濾鏡:經過指定的濾鏡修改解碼後的數據幀。(修改數據幀)

    3)encoding編碼:經過指定編碼器將數據幀編碼爲數據包。(數據幀frame ——> 數據包data package)

    4)muxing封裝:將數據包封裝爲指定的媒體格式。(數據包data package ——> 文件file)

    

    

3. 編解碼器

  codec是coder和decoder的組合縮寫。用於編解碼視頻流和音頻流數據的。ffmpeg的編解碼是基於比特流進行的。在ffmpeg命令行可經過 -c 或者 -codec指定編解碼器。語法以下:

    -codec[:stream_specifier] codec_name

4. 轉換的全局選項和特定選項

  在轉碼過程裏面,

    有一些選項全局選項,以下-y表示覆蓋輸出,-n表示結束處理過程,不覆蓋輸出;-target 表示針對指定設備進行轉碼處理。等等

    也有一些特定選項,好比只能用於視頻或者音頻等等。

相關文章
相關標籤/搜索