Man On a Mission

システム運用屋が、日々のあれこれや情報処理技術者試験の攻略を記録していくITブログ…というのも昔の話。今や歴史メインでたまに軍事。別に詳しくないので過大な期待は禁物。

【Linux】コマンドラインで動画からGIFアニメを作る

今日はLinuxについての記事です。
とはいっても、カーネルの仕組みがどうとか小難しい話じゃなくて、タイトル通り、動画ファイルからGIFアニメへの変換について。

最近、GIFアニメの利用価値が見直されてきています(と聞いてます)。
動画ファイルよりもサイズが小さいとか、ブラウザ上でクリック無しで再生できるとか、そういった点が再評価されているようです。
確かに、「動画を上げるほどじゃないけど、動きがないと伝えづらい」というような時にはGIFアニメが良さそうですが、伝えたい部分だけ動画から抜き出してGIFアニメにする、というのは結構面倒くさいものです。

今回は、この面倒くさい動画カット→GIFアニメを(比較的)簡単に行う方法を紹介します。

 ただし、Linuxコマンドラインを使って行うという、かなりニッチ層へ向けた記事となっております。
LinuxでもAvidemuxなどGUIの動画編集ソフトがありますが、今回想定では凝った編集はせず、動画の一部を抜き出すだけですので、その場合はコマンドラインの方が手っ取り早いです。たぶん。

なお、Linuxと言ってますが、ディストリビューションUbuntuを想定しております。
(他ディストリでもやり方は変わらないかと思いますが、最初の導入部分だけは、各環境に合わせて行っていただく必要があります。)

必要ツールの導入

さて、まずは必要ツールの導入です。とはいえ、特段、知る人ぞ知るみたいなツールを紹介するわけでもなく、普通に「ffmpeg」を導入するだけです。

https://ffmpeg.org/

Ubuntu 16.04の場合は、以下でインストールできます

sudo apt install ffmpeg

私は、Ubunutu14.04を使っていますが、14.04ではffmpegが公式リポジトリから消されてしまいました。
そのため、リポジトリを追加してインストールする必要があります。

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg

CentOSDebianを使っている方は…まあ、どうにか適当にインストールしてください(投げやり)。

動画のカット

さて、動画カット〜GIFアニメへの変換ですが、一応、動画カットとGIFアニメ変換を分けて記述します。
実際にはコマンド一発変換も可能なのですが、オプションだらけになってややこしいので。
(一発変換は後ほど取り上げます。)

動画の一部抜き出しは、以下コマンドで行います。

ffmpeg -ss 抜き出し開始時間 -i 動画ファイル名 -t 抜き出す時間 出力ファイル名

抜き出し開始時間/抜き出す時間は、hh:mm:ss.ssで指定してください。hhおよびmmは省略可能です。

ex:foo.mp4の2分16秒地点から、10.5秒間をbar.mp4として出力

ffmpeg -ss 2:16 -i foo.mp4 -t 10.5 bar.mp4

GIFアニメへの変換

お次はGIFアニメへの変換です。

ffmpeg -i 動画ファイル名 -an -r フレーム数 -s 画面サイズ -f gif 出力ファイル名

画面サイズは、横ピクセル数x縦ピクセル数(真ん中のxは小文字のエックスです。)で指定してください。

ex;前節で作成した動画ファイルをGIFアニメに変換

ffmpeg -i bar.mp4 -an -r 15 -s 320x180 -f gif buzz.gif

以上で変換完了です。

一発変換

とりあえず動画カット、GIF変換と2段階にわけて書きましたが、前述の通り、コマンド一発で変換も可能です。
単に、双方のオプションを一つにするだけですが。

ex:一発変換

ffmpeg -ss 2:16 -i foo.mp4 -t 10.5 -an -r 15 -s 240x180 -f gif buzz.gif

サンプル画像など

重くなってしまいますが、以下、動画から変換したGIFアニメサンプルです。
画面うるせえ。インターネット黎明期みたい。

 

f:id:lmacs510:20170221235207g:plain

リベリオンより。みんな大好きガン=カタ

f:id:lmacs510:20170221235337g:plain

カンフー・ジャングル
動きの速いシーンもフレーム数を上げれば、まあそこそこは。(20フレーム)

f:id:lmacs510:20170221235440g:plain

どマイナー映画、水滸伝-男たちの挽歌より。
魯智深林冲を助けに来たシーン(原作とは異なります)での、数珠による範囲攻撃(斬新)。
ちなみに、兵2名を盾にするクソ野郎は陸謙。君たち、嫌なときは嫌だって言っていいんだよ!*1

 

 

*1:軍隊除く