準備編¶
目標¶
本ノートが FFmpeg を利用して達成したい事項を列挙する:
携帯電話で撮影したり、YouTube などからダウンロードして得たビデオファイル、主に MP4 ファイルに対して
情報を確認する
手軽に再生する
各種加工処理を施す
ファイルサイズを小さくするなど最適化する
UNIX の cat の意味で連結する
テキストを追加する
フェイドアウトなどの視覚演出を施す
音声トラックから音声ファイル(主に MP3 ファイル)を生成する。
静止画像からビデオを作成する
音声トラックを添える
映像フィルターを応用する
インストール方法、更新方法、アンインストール方法¶
まず端末で ffmpeg がインストール済みかどうかを試す。インストールされていなければ、Ubuntu 標準の方法でパッケージをインストールすればいい:
$ sudo apt install ffmpeg
したがって、更新方法も Ubuntu 標準の方法による。私の場合は他のパッケージと同時に更新するのが普通だ。
$ sudo apt update
アンインストールするには次のコマンドを実行する。アンインストールしないほうがいい:
$ 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 が判断する。
$ ffmpeg -i input.mp4 output.mp3
余裕があれば encoding オプションを付与するといい:
$ ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 1 output.mp3
ビデオから音声を削除する¶
コンテナーファイルから音声ストリームを削除する方法と、音声をゼロにする方法が考えられる。どちらを採用するかを目的に応じて決めろ。
$ ffmpeg -i input.mp4 -c:v copy -an output.mp4
$ ffmpeg -i input.mp4 -c:v copy -af volume=0 output.mp4
MP4 ファイルを Twitter 投稿用に最適化する¶
$ ffmpeg -i input.mp4 -c:v h264 -crf 28 output.mp4
ビデオの解像度を確認する¶
ffprobe で確認する。コマンドラインオプションを細かく指定すれば解像度だけを WxH
の形式で出力できる。これは目視確認用途(機械向けでない)コマンドとしたい:
$ ffprobe -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4
ファイルを再生する¶
WSL 環境では WSLg が利用可能になっていることが前提だ。
$ ffplay input.mp4