Linuxにffmpegをインストールするのつづき
Linuxでffmepgを実行し動画をエンコードした際の、コマンドのオプションとその説明、またファイルを一括変換するコマンドの備忘録
オプション
-vcodec
ビデオコーディックを指定します
変換したいコーディックがある場合このオプションとコーディックを指定すると、そのコーディックで変換されます
主に使うものは以下かと思われます
- libx264
MPEG-4,H.264 - h264_nvenc
H.264(NVIDIA CUDAアクセラレーション)
NVIDIAのGPUを使っている場合に使用できます
高速で変換できますが、低画質となります - h264_qsv
H.264(Intel Quick Sync Video)
IntelのCPUを使っている場合使用できます
-s
サイズを指定します
ここでは、1440×1080のサイズとします
-aspect
アスペクト比を指定します
ここでは、16:9を維持したいので16:9とします
-bf
最大 “frames” 枚の連続する B フレームを指定します
デフォルト=0 (B フレーム不使用)
ここでは、4とします
-b_strategy
B フレームの挿入位置を適応的に判断するかどうか指定します
デフォルト=0 (-bf で指定した枚数を常に使う)
ここでは、4とします
-profile:v
プロファイルを指定します
baseline
main
high
ここでは、より高画質にするためhighとします
-g
GOP サイズを指定します
デフォルト=12。
シークのしやすさに関係してきます
ここでは、150とします
-b:v
映像ビットレートを指定します
品質を指定するため、0とします
-cq
固定品質モードの画質を指定します
- -qp 21 ◎ 細部の描画も良好
- -qp 23 ◎ 静止画でも気にならない
- -qp 25 ◎ 静止画だと少し気になる
- -qp 28 ○ 動いているなら気にならない
- -qp 32 △ 動きが大きい時なら許容できる
- -qp 36 × 動きが大きくてもかなり気になる
画質に対するサイズは25だと元ファイルの約半分強、28だと1/3ぐらいになりました
アニメの場合は25、実写の場合は28とします
-tune
最適化のタイプを指定します
- film
- animation
- grain
ざらざらが残るような古い映画などの場合使います - stillimage
スライドショーなど、動きのほとんどない場合に使います - fastdecode
一部処理を簡略化してデコードの際の負荷を減らします
代わりに画質は落ちます - zerolatency
再生の際のレイテンシを減らしたい場合に使います
頭出しは速くなるが、ファイルサイズは少し増加します
ここでは、animation,zerolatencyとします
-async
音声の同期方法を指定します
音がズレたときに1秒間で何サンプルまで変更していいかを指定する
ここでは、1を指定して音声の最初だけ同期して後続のサンプルはそのままとします
-codec:a
オーディオコーデックを指定します
ここでは、copyを指定してそのまま出力します
-fflags +discardcorrupt-bsf:a aac_adtstoasc
aac bitstream errorが頻発したので、本オプションをつけました
コマンド
できたコマンドは次のようになります
ffmpeg -fflags +discardcorrupt -i {元ファイル名} -async 1 -s 1440x1080 -aspect 16:9 -vcodec h264_nvenc -bf 4 -b_strategy 4 -profile:v high -g 150 -b:v 0 -cq 25 -tune animation,zerolatency -c:a copy -bsf:a aac_adtstoasc {変換後ファイル名}.mp4
つぎにffmpegでフォルダ内ファイル一括変換するコマンドをしていきたいと思います
コメント