準備編

目標

本ノートが FFmpeg を利用して達成したい事項を列挙する:

  • 携帯電話で撮影したり、YouTube などからダウンロードして得たビデオファイル、主に MP4 ファイルに対して

    • 情報を確認する

    • 手軽に再生する

    • 各種加工処理を施す

      • ファイルサイズを小さくするなど最適化する

      • UNIX の cat の意味で連結する

      • テキストを追加する

      • フェイドアウトなどの視覚演出を施す

      • 音声トラックから音声ファイル(主に MP3 ファイル)を生成する。

  • 静止画像からビデオを作成する

    • 音声トラックを添える

  • 映像フィルターを応用する

インストール方法、更新方法、アンインストール方法

まず端末で ffmpeg がインストール済みかどうかを試す。インストールされていなければ、Ubuntu 標準の方法でパッケージをインストールすればいい:

bash$ sudo apt install ffmpeg

したがって、更新方法も Ubuntu 標準の方法による。私の場合は他のパッケージと同時に更新するのが普通だ。

bash$ sudo apt update

アンインストールするには次のコマンドを実行する。アンインストールしないほうがいい:

bash$ sudo apt remove ffmpeg

コマンドライン準備

次の別名をシェルのドットファイルに定義しておく。本ノートの以降の記述では、この別名を無断で用いる:

alias ffmpeg='ffmpeg -hide_banner'
alias ffplay='ffplay -hide_banner -v error'
alias ffprobe='ffprobe -hide_banner -v error'

フォント準備

Todo

構成ファイルの考え方がわかっていない。

常用コマンド集

頻繁に実行するコマンドをまとめておく。コマンドを記述するのが面倒なものについては、シェルスクリプトにラップしたり、ドットファイルで別名定義や関数定義をするべきだ。

コマンドラインのオプションなどの解説は本節では行わない。別にまとめて行う。

ビデオから音声を抽出して MP3 ファイルに保存する

出力ファイルの拡張子から音声ファイルが求められていることを ffmpeg が判断する。

bash$ ffmpeg -i input.mp4 output.mp3

余裕があれば encoding オプションを付与するといい:

bash$ ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 1 output.mp3

ビデオから音声を削除する

bash$ ffmpeg -i input.mp4 -c:v copy -an output.mp4

MP4 ファイルを Twitter 投稿用に最適化する

bash$ ffmpeg -i input.mp4 -c:v h264 -crf 28 output.mp4

ビデオの解像度を確認する

ffprobe で確認する。コマンドラインオプションを細かく指定すれば解像度だけを WxH の形式で出力できる。これは目視確認用途(機械向けでない)コマンドとしたい:

bash$ ffprobe -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4

ファイルを再生する

WSL 環境では WSLg が利用可能になっていることが前提だ。

bash$ ffplay input.mp4