名も無き詩人の奏でる詩

名前もない詩人が奏でる、ただの詩(うた)です

FFmpegの設定覚書

 というわけで、タイトルとおり、FFmpegを導入したので、それのほぼ、覚書。

紹介

 FFmpegCUIベースではあるけれど、動画や音声加工に優れた動画編集ツールです。
 ただ、使ってみると楽で、Windowsでもbatを駆使して描いてしまえば、割かし使いやすいツールとなります。Aviutl使って色々変換してたんですが、なんだか編集がしづらくて…
 あちらは、きっとyoutubeに動画を挙げるなどの場合の編集に使用するのがよいと思われます。動画の保存目的や再度圧縮、回転、クリッピング程度でしたら、FFmpegをたたくのがよさげです。

インストール

Windows版は公式HPからダウンロードできます。  詳しくは以下を参照してください。

【windows】FFmpegをインストールする手順|新卒エンジニアの開発日記

基本的な使い方

FFmpegの基本的な使い方は以下との通り

ffmpeg [入力オプション] -i [入力ファイル名] [出力オプション] [出力ファイル名]

基本的には

入力オプション: フィルタ処理の設定をするようなイメージかな?ここでResizeやRotateをします
入力ファイル名: ソースとなる動画ファイルを指定
出力オプション: 動画のビットレートや音声のサンプリング周波数などを指定
出力ファイル: 出力ファイル名を設定する。出力ファイル名の拡張子を見て動画形式を変えてくれるので参考になる

入力オプション

ここでは、使っているものだけを記載する

クロップする

画面をクロップする場合の使い方以下の通り。

ffmpeg -vf crop=1024:720:128:0

このオプションを使ったときは、元の画面サイズは1280x720だったので、左右を128pixelづつ切って1024にする指定。左上を起点にし、1024:720の枠をどこからスタートさせるものかということを考えるとわかりやすい。参考は以下。

w.atwiki.jp

回転させる

上でクロップしたものを画面を回転させるのが、以下

ffmpeg -vf transpose=2

それぞれオプションの意味が
-vf transpose=1 : 右に90度回転
-vf transpose=2 : 左に90度回転(右に270度回転)
-vf hflip : 左右反転
-vf vflip : 上下反転
以下のサイトを参照 qiita.com

フィルタの2つ組み合わせ

フィルタオプションを二つ組み合わせるときは、以下。

-vf crop=1024:720:128:0,transpose=2

,(カンマ)で区切ることになるが、その間にスペースは挿入しない。

入力ファイル

ffmpeg -i [入力ファイル]

-iで入力ファイルを指定することになる

出力オプション

ここでは、Video Codecの選択などを行い、設定をする。 主に使っているのは以下

-i hoge.webm
-c:v libvpx-vp9
-b:v 2000k
-minrate 1000k
-maxrate 2500k
-c:a libopus

Video Codecの指定

-c:v : Video codecの指定、ここではVP9を指定している。VP9については以下を参照。 nico-lab.net

動画ビットレートなどの指定

-b:v 2000k : 平均ビットレートを2560kbpsで指定
-minrate 1000k : 最小ビットレートを1000kbpsで指定
-maxrate 2500k : 最大ビットレートを2500kbpsで指定
元の動画2.5Mbpsぐらいのものなので、上記で指定をしている

音声コーデックの指定

-c:a libopus : VP9はopus形式らしい。以下のリンク先にはないが、音声のオプション設定は以下を参照 qiita.com

2passエンコーディング

 エンコードの時間はかかるが、これをやると画質が良くなる(と信じている)ので、設定。

ffmpeg.exe -i input.webm -c:v libvpx-vp9 -b:v 2000k -minrate 1000k -maxrate 2500k -an -pass 1 -f null -
ffmpeg.exe -i input.webm -c:v libvpx-vp9 -b:v 2000k -minrate 1000k -maxrate 2500k -c:a libopus -pass 2 -f webm output.webm

設定のコツとしては

  • 入力オプションの設定は両方に行うこと
  • 入力ファイルも両方で設定すること
  • 1passの時は
    • audio-anとして圧縮しないこと
    • output出力も-f null -として出力しない設定にする
  • 2passの時に
    • audioの指定を追加
    • 出力ファイルを指定すること

これで2pass encodingが走り始める。

出力ファイル名

ffmpeg -i input.webm output.webm

-oとかはいらない模様

参考

最終的にはドキュメント読めなんだけど、日本語の解説サイトに頼ってしまいます。

qiita.com

ffmpeg.org