FFmpeg チートシート
よく使うコマンドや Tips などを始めとした豆知識などをまとめるページ
随時更新
基本的な使い方
単純に異なる拡張子(コンテナ形式)に変換する場合は、変換元のファイル input.mkv と変換後のファイル output.mp4 を以下の通りに指定して実行するだけで OK です。
> ffmpeg -i input.mkv -c copy output.mp4
OBS で Matroska Video 形式(.mkv)で録画した動画を MP4 形式に変換(最多重化)する場合などに便利です。
-c copy オプションは、変換元のファイルの映像・音声ストリームを再エンコードせずにそのままコピーすることを指定しています。
映像データの変換
映像エンコーダの指定
データ容量の圧縮などのために、映像データを再エンコードする場合は、以下のように -c:v オプションを追加して映像エンコーダを指定します。
-c オプションがエンコーダを指定するためのもので、 :v を付けることで映像ストリームに対してエンコーダを指定することを意味します。
> ffmpeg -i input.mkv -c:v libx264 output.mp4
ここでは libx264 を指定しています。これは H.264 形式の映像エンコーダを使用し、CPU で処理することを意味します。エンコード処理に CPU を使用するため低速ではあるものの、実行環境を問わないというメリットがあります。
GPU を使用して高速化する場合、搭載している GPU に合わせたエンコーダを指定する必要があります。
| GPU ベンダ | エンコーダ |
|---|---|
| NVIDIA | h264_nvenc |
| Intel | h264_qsv |
| AMD | h264_amf |
コーデック自体にも種類がいくつかありますが、基本的に H.264 を使用しましょう。
ビットレートの指定
-b オプションを使用してビットレートを指定することができます。映像ストリームに対してビットレートを指定するため、エンコーダと同様に :v を付加し、 -b:v とします。
10Mbps のビットレートを指定する場合は -b:v 10M のようにします。数字が大きいほどファイルサイズが大きい代わりに高品質、数字が小さいほどファイルサイズが小さい代わりに低品質になります。
例:NVIDIA GPU を使用して目標ビットレート 20Mbps でエンコードする場合
> ffmpeg -i input.mkv -c:v h264_nvenc -b:v 20M output.mp4
NVIDIA NVEnc は NVIDIA の GPU に搭載されているハードウェアエンコーダで、非常に高速にエンコード処理を実行できる優秀なアクセラレータです。
Intel QSV は Intel の GPU に搭載されているハードウェアエンコーダで、こちらも高速にエンコード処理を実行できます。CPU 内蔵の iGPU である Intel UHD Graphics や Intel Iris Graphics 等でも使用できるため、Intel CPU 搭載の PC であれば広く使用できるアクセラレータです。出力の品質が高いことで知られています。
AMD は使ったことないので知りません。
音声データの変換
音声データを再エンコードする場合は、以下のように -c:a オプションを追加して音声エンコーダを指定します。
:a を付けることで音声ストリームに対してエンコーダを指定することを意味します。
> ffmpeg -i input.mkv -c:v h264_nvenc -b:v 20M -c:a aac output.mp4