LoginSignup
46
37

More than 5 years have passed since last update.

ffmpegとimageMagickを使ってmp4からいい感じにgifに変換する

Last updated at Posted at 2015-09-28

Androidのスクリーンの動画をmp4からgifに変換する方法について。@kgmyshinさんに以下のコマンドを教えていただいたのですが、ちょっと調整した点があったので、メモ。

Screen Shot 2015-09-29 at 00.15.13.png

mkdir ________work
ffmpeg -i $0 -an -r 15 ________work/%04d.png
convert  work/*.png __mov.gif
rm -r ________work

事前準備

imagemagickffmpegを導入します。いずれもhome brewからインストールできます。

brew install ffmpeg
brew install ImageMagick

簡単ですね。

ffmpeg(mp4 -> png)

まず、ffmpegの以下のコマンドですが

ffmpeg -i $0 -an -r 15 ________work/%04d.png

mp4を画面ごとのpngにしてくれます。

  • -i のところでファイル名(シェルスクリプトで実行しない場合はファイル名, スクリプトで実行する場合は引数指定)
  • -an でオーディオは録音しない
  • -r でフレームレートを指定します。上なら 15frames/secですね。
  • %04d.pngの部分は 0000.pngという風にナンバリングします。

27秒の動画を変換したので420枚程のpngとなりました。

ffmpeg -i sample.mp4 -an -r 15 %04d.png

imagemagick(png -> mp4)

convert  work/*.png __mov.gif

上記を実行すると、pngが繋げられてgifに変換されますが、ここで一つ問題が発生します。ファイルサイズがデカイ。
6MBのmp4を変換した所、43MBとなってしまいました。
Screen Shot 2015-09-29 at 00.05.03.png

これはいけてないので、pngのサイズを小さくしてみます。

圧縮率の指定

まずは圧縮率を指定してみました。-resizeはpngを圧縮する時に指定するコマンドです。2桁ですが、10の位の部分が圧縮率を指定しているようです。とりあえず20を指定してみました。

convert *.png -resize 20 output_%04d.png
convert output_*.png kekka.gif

すると、以下の様に完全にぼやけたgifになってしまいました。
debot_3.gif

サイズの指定

次にサイズを変更してみました。先ほどの -resize を利用しますが、今度は%をつけます。これでサイズが変更されます。

convert *.png -resize 20% output_%04d.png
convert output_*.png kekka.gif

この結果、元動画くらいくっきりgifでありながら、サイズは1/10までサイズダウンできました。

Screen Shot 2015-09-29 at 00.10.56.png

最終的なコマンド

ffmpeg -i sample.mp4 -an -r 15 %04d.png
convert *.png -resize 20% output_%04d.png
convert output_*.png kekka.gif 
46
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
37