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 表示針對指定設備進行轉碼處理。等等
也有一些特定選項,好比只能用於視頻或者音頻等等。