ffmpegコマンドを使ってみる

Linuxではffmpegコマンドで、動画・音声ファイルを簡単に編集出来ます。今まで便利に使ってきたffmpagコマンドについて記載してみました。

ffmpegの導入

ffff00 3f3f3f

まず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コマンドの使用例

動画の有るフォルダーに移動後・・・
$ ffmpeg -i “圧縮したいファイル.mp4” -crf 32 出力ファイル名.mp4
上記の内、-crf の後の数値を大きくすると圧縮率が上がります。一方画質は劣化します。
$ ffmpeg -ss 10 -t 4 -i pexels828s.mp4 pexels1.gif
上記の例は、元のmp4ファイル、pexels828s.mp4を、開始10秒目から4秒間を切り出して、pexels1.gifファイルとして出力しています。
$ ffmpeg -i pexels828s.mp4 -vf crop=1280:180:0:300 pexels828s.gif
上記は、pexels828s.mp4動画ファイルから、トリミングした、pexels828s.gif動画を得る方法。上下全幅で高さ300pxをカット!
$ ffmpeg -ss 0 -t 4.3 -i pexels828s.gif pexels828s1.gif
同じgifファイルで、0秒から、4.3秒間を抜き出して、別名で保存する方法!
$ ffmpeg -i pexels828s1.gif -vf pad=0:780:0:300:black pexels828so.gif
元画像が、1280wx180hのgifファイルに、上下300pxの、黒い余白を設けて、別名のgif動画に出力するコマンド例
$ ffmpeg -i flowerfield.mp4 -vf scale=1280:-1 flowerfield-ss.mp4
解像度が1980w1080hのビデオをw1280wの解像度に落とすコマンド例
$ ffmpeg -i input.mp4 -r 60 image%03d.jpg
動画から、連番の静止画を出力する。1秒毎に何枚出すか指定します。
$ ffmpeg -i image%04d.jpg output.gif
連番の画像から動画GIGを作る場合は上記の例が参考になります!
$ ffmpeg -i kawa2.mp4 -vf fps=17 image.gif
上記のコマンドは、フレームレートを、毎秒17にダウンした上、GIFファイルに変換する例です。
$ ffmpeg -i video-n.mp4 -vf reverse -b 1777k video-r.mp4
上記は、ビデオファイルvideo-n.mp4を、逆再生した状態の新しい、videro-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動画にし、アプリで結合した
$ ffmpeg -i image2.gif -vf scale=1650:-1 image3.gif
上記は、動画GIFの解像度を1280から,1650に大きくするコマンド例です。
$ ffmpeg -i garden.mp4 -vf scale=1680:1050:-1 garden1.mp4
アスペクト比を元は1680×950を、1680×1050に変更するコマンド例です。
$ ffmpeg -i bard-full.mp4 -strict -2 bard-full.webm
mp4形式の動画ファイルを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 オプションの後ろにオーディオファイル名を指定します。実在しないとエラーで終了します。

上部へスクロール