動画・静止画・音声ファイルなどを簡単なコマンドで処理出来るffmpegコマンドについて、使用例をまとめてみました。使い慣れると、コマンド処理ですので、早く結果を得たい時に重宝します。
ffmpegの導入
まずffmpegをインストールします。
$ sudo apt install ffmpeg
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
ffmpeg はすでに最新バージョン (7:3.4.8-0ubuntu0.2) です。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libpopt0:i386 linux-headers-5.4.0-73-generic linux-hwe-5.4-headers-5.4.0-42
linux-hwe-5.4-headers-5.4.0-48 linux-hwe-5.4-headers-5.4.0-51
linux-hwe-5.4-headers-5.4.0-52 linux-hwe-5.4-headers-5.4.0-53
linux-hwe-5.4-headers-5.4.0-54 linux-hwe-5.4-headers-5.4.0-56
linux-hwe-5.4-headers-5.4.0-58 linux-hwe-5.4-headers-5.4.0-59
linux-hwe-5.4-headers-5.4.0-60 linux-hwe-5.4-headers-5.4.0-62
linux-hwe-5.4-headers-5.4.0-64 linux-hwe-5.4-headers-5.4.0-65
linux-hwe-5.4-headers-5.4.0-66 linux-hwe-5.4-headers-5.4.0-70
linux-hwe-5.4-headers-5.4.0-72 linux-hwe-5.4-headers-5.4.0-73
linux-image-5.4.0-73-generic linux-modules-5.4.0-73-generic
linux-modules-extra-5.4.0-73-generic python3-click python3-colorama
これを削除するには ‘sudo apt autoremove’ を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。
ffmpegコマンドの使用例
◆動画の圧縮。動画の有るフォルダーに移動後・・・下記で-crf の後の数値を大きくすると圧縮率が上がります。一方画質は劣化します。
$ ffmpeg -i “圧縮したいファイル.mp4” -crf 32 出力ファイル名.mp4
◆元のmp4ファイルを、開始10秒目から4秒間切りだし、gifファイルとして出力
$ ffmpeg -ss 10 -t 4 -i pexels828s.mp4 pexels1.gif
◆pexels828s.mp4動画ファイルから、トリミングした、pexels828s.gif動画を得る方法。上下全幅で高さ300pxをカット!
$ ffmpeg -i pexels828s.mp4 -vf crop=1280:180:0:300 pexels828s.gif
◆同じgifファイルで、0秒から、4.3秒間を抜き出して、別名で保存する方法!
$ ffmpeg -ss 0 -t 4.3 -i pexels828s.gif pexels828s1.gif
◆余白の挿入。元画像が、1280wx180hのgifファイルに、上下300pxの、黒い余白を設けて、別名のgif動画に出力するコマンド例
$ ffmpeg -i pexels828s1.gif -vf pad=0:780:0:300:black pexels828so.gif
◆解像度変更。解像度が1980w1080hのビデオをw1280wの解像度に落とすコマンド例
$ ffmpeg -i flowerfield.mp4 -vf scale=1280:-1 flowerfield-ss.mp4
◆動画から、連番の静止画を出力する。1秒毎に何枚出すか指定します。
$ ffmpeg -i input.mp4 -r 60 image%03d.jpg
◆連番の画像から動画GIGを作る場合は下記の様に記述します!
$ ffmpeg -i image%04d.jpg output.gif
◆フレームレートを、毎秒17にダウンした上、GIFファイルに変換する例です。
$ ffmpeg -i kawa2.mp4 -vf fps=17 image.gif
◆ビデオファイルvideo-n.mp4を、逆再生した状態の新しい、videro-r.mp4として出力する。ビットレートの指定をする。
$ ffmpeg -i video-n.mp4 -vf reverse -b 1777k video-r.mp4
◆ ビデオを結合するコマンドですが、2つとも同じフォーマットの必要(ビットレート他)があります。
$ ffmpeg -safe 0 -f concat -i files.txt -c:v copy -c:a copy -map 0:v -map 0:a output.mp4
上記はfile.txtに記述したファイル files.txtの内容 file ‘video-n.mp4’ file ‘video-r.mp4’・・・最終出力はGIF動画なので、それぞれを単独にGIF動画にし、アプリで結合した
◆動画GIFの解像度を1280から,1650に大きくするコマンド例です。
$ ffmpeg -i image2.gif -vf scale=1650:-1 image3.gif
◆アスペクト比を元は1680×950を、1680×1050に変更するコマンド例です。
$ ffmpeg -i garden.mp4 -vf scale=1680:1050:-1 garden1.mp4
◆mp4形式の動画ファイルをwebm形式の動画に変換します。Webサイトへのアップロードに適しています
$ ffmpeg -i bard-full.mp4 -strict -2 bard-full.webm
複数のオーディオファイルの連結例
ffmpegコマンドで複数の音楽ファイルを一つのファイルに連結してみました
$ ffmpeg -i hahabyr1.mp3 -i hahabyr2.mp3 -i hahabyr3.mp3 -i hahabyr4.mp3 -filter_complex “concat=n=4:v=0:a=1” hahabyr.mp3
上記の例は、オーディオファイル、hahabyr1.mp3 〜 hahabyr4.mp3までの4つのオーディをファイルを一つのオーディオファイルとして連結するものです。勿論、同じファイルでも可能です。例えば4回リピートして止める動作になります。
-i オプションの後ろにオーディオファイル名を指定します。実在しないとエラーで終了します。