FFMPEGのコマンドサンプル8選

プログラム


以前の記事(ffmpegでyoutube用の動画編集(結合、分割、字幕追加))で
FFMPEGによる撮影・結合・分割・字幕追加・モザイク・音楽と動画の合成
コマンドについて記載しました。

しかし作成する動画によっては、上記のコマンドだけではうまくカバーしきれないことがあります。

今回は、そんな問題に直面した時に利用できそうなFFMPEGコマンドのいくつかを記録していきたいと思います。

FPSレートの調整

形式の違う動画同士を結合する際に、警告メッセージ(※1)が発生することがあります。

作成された動画を見てみると、音声は聞こえるのですが、動画が途中で止まってしまいます。

この問題を解決するために、各動画のFPSレート(※2)を合わせるためのコマンドを利用します。

以下のコマンドは -r 30 の部分でFPSレートが30の動画を作成しています。全ての動画のFPSレートを合わせることで動画結合時の警告メッセージはなくなります。

(※1)例えば次のようなメッセージが出力されます。
Non-monotonous DTS in output stream 0:0; previous: 45568, current: 34666; changing to 45569. This may result in incorrect timestamps in the output file.

(※2)「FPS」は、frames per second(コマ/秒)を表します。1秒間の動画で見せる静止画の枚数(コマ数)です。

4分割画面の動画の作成

インパクトのある動画や比較動画を作成するために、いくつかの動画を一つの画面に組み合わせる必要があります。

コマンドは以下を利用します。

作成した動画は例えば以下の様になります。

容量節約

作成する容量を節約すれば、YouTubeへの動画アップロード時間などを
節約することができます。

ここでは、 H.265エンコーダ(※1)による動画圧縮で容量の節約を行います。-vcodec libx265で指定します。

(※1) H.265エンコーダについては、 FFMPEGの公式HPに説明があります。H.264に比べて圧縮率が50-75%上がっています。

スレッド数指定

FFmpeg は自動的に使用する CPU スレッドの数を決定します。
ただし -threads <number> パラメータを使うことで明示的にスレッド数を指定することも可能です。

通常、CPUコア数と同数を指定します。
-threads 0 でコア数の1.5倍のスレッド数が指定されます。
※CPU負荷が100%付近で推移してFFmpegが落ちてしまう場合は、-threadsをコア数より少なくするといいかもしれません。

音声の抜き出し

ある動画の音声だけを利用したい場合に利用します。

-vn -acodec copy の部分で指定します。

2つの音声を合成

2つ以上の音声を重ね合わせて一つの音声にする場合に利用します。

-filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 のオプションで指定します。

サイズ変更

動画をアップロードするサイトで動画のサイズ 限度 が指定されている場合に利用します。

-s [横サイズ]x[縦サイズ] のオプションで指定します。

90度傾ける

撮影時にカメラを90度傾けていた動画を元に戻した状態とする場合に利用します。

-vf “transpose=[数値]”のオプションで指定します。
[数値]部分には、次の値を設定します。

意味
0 90度反時計回りに回転したのち上下反転
1 90度時計回り
2 90度反時計回り
3 90度時計回りののち上下反転

コメント

タイトルとURLをコピーしました