FFmpeg是一個開源的影音處理工具集。

Synopsis 概要

$ ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url}

$ ffmpeg [全局參數] {[輸入參數] -i 輸入} ... {[輸出參數] 輸出}

封裝格式(Container)

封裝格式是指將多軌流文件混(mix)在一個容器(container)裡,常見的 mkvmp4 都屬此類。

$ ffmpeg -formats # 查看 ffmpeg 支持的封裝格式(類型)

編碼(Codec)

不同的編碼有不同的特性。

$ ffmpeg -codecs # 查看 ffmpeg 支持的編碼格式

編碼後會提示所用的編碼器(Encoder)。

$ ffmpeg -encoders # 查看 ffmpeg 支持的編碼器

常用參數

  • -hide_banner :隱藏無關信息。
  • -y:全局參數,遇到同名文件默認覆蓋。
  • -c[:stream_specifier] :指定編碼器,特別的,使用 v(a) 指明視(音)頻。
  • -a(v)n:剔除音(視)頻流。
  • -r [frame]:強制改變輸出幀率。

實例

查看元信息

$ ffmpeg -i [input_url]

轉換

將輸入文件用 libx265 進行重編碼(Transcoding),封裝格式為 mp4

$ ffmpeg -i [input_url] -c:v libx265 encoder.mp4

將輸入文件用 mkv 進行重封裝(Transmuxing),流不變。

$ ffmpeg -i input.mp4 -c copy output.mkv

調整碼率(Transrating)

$ ffmpeg \
-i input.mp4 \
-minrate 1000K -maxrate 3000K -bufsize 2000K \
output.mp4
  • -minrate:最低碼率
  • -maxrate:最高碼率
  • -bufsize:緩衝

調整分辨率(Transsizing)

$ ffmpeg \
-i input.mp4 \
-vf scale=-1:720 \
output.mp4
  • -vf-filter:v 的縮略形式,scale 為過濾器,參數 w:h 可包含一些變量,iwih 表示原始寬高,當為負值 -n 時,FFmpeg 會按原始寬高進行自適應,且計算值能被 n 整除。