2015年3月18日水曜日

動画変換ソフトFFmpegをCentOS6にインストール

動画や音声をエンコードしてくれるソフトである FFmpeg(https://www.ffmpeg.org/)をCentOS6で扱えるようにします。
ついでに、ImageMagickも使ってアニメーションGIFを作ってみます。

この動画を。

アニメーションGIFに変換します。



動画ファイル -> 1コマづつのPNGファイル生成 -> アニメーションGIF
という流れです。以下、作業ログです。

yumライブラリをインストール
# yum -y install autoconf automake make gcc gcc-c++ pkgconfig wget libtool zlib-devel
# yum -y install git
# yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum -y install --enablerepo=epel yasm
x264 をインストール
# cd /usr/local/src
# git clone git://git.videolan.org/x264
# cd x264
# ./configure --enable-shared
# make
# make install
fdk-aac をインストール
# cd /usr/local/src
# git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git
# cd fdk-aac
# autoreconf -fiv
# ./configure
# make
# make install
ライブラリパスを設定
$ export LD_LIBRARY_PATH=/usr/local/lib/
$ echo /usr/local/lib >> /etc/ld.so.conf.d/custom-libs.conf
$ ldconfig
ffmpeg のインストール
# cd /usr/local/src
# git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
# cd ffmpeg
# ./configure --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264 --enable-shared --arch=x86_64 --enable-pthreads
# make
# make install
# ffmpeg -version
ffmpeg version N-70803-g0f16dfd Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)
configuration: --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264 --enable-shared --arch=x86_64 --enable-pthreads
libavutil      54. 20.100 / 54. 20.100
libavcodec     56. 28.100 / 56. 28.100
libavformat    56. 25.101 / 56. 25.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 12.100 /  5. 12.100
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  3.100 / 53.  3.100
ffmpegの動作確認として、動画サイズを変更するようにエンコードを実行してみます。
# ffmpeg -i /tmp/sample.mp4 -s 200x150 \
  -vcodec libx264 -profile:v baseline -preset:v slower \
  -b:v 300k -maxrate 300k -minrate 300k -bufsize 1000k \
  -ac 2 -c:a libfdk_aac -b:a 64k /tmp/encoded_sample.mp4
ffmpegがエンコードしたファイルを確認してみてください。指定したとおりにエンコードされているでしょうか?

ImageMagickをインストール
# yum -y install ImageMagick ImageMagick-devel

やっと準備が出来ました。
アニメーションGIFを作ってみましょう。

動画ファイルをPNGファイルに変換
# ffmpeg -i /tmp/sample.mp4 -an -r 15 -s 160x90 /tmp/%05d.png
PNGファイルをアニメーションGIFに変換
# convert /tmp/*.png sample.gif
うまく変換できたでしょうか?
FFmpeg + ImageMagickさえインストールしてしまえば、2コマンドで処理が済みました。かなりお手軽な感じがしていいですね。

FFmpegは、ビルド済みのバイナリファイルが公開されているので、こちらを使っても良いとおもいます。
FFmpeg Static Builds
https://johnvansickle.com/ffmpeg/

参考資料

CompilationGuide/Centos – FFmpeg
https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
Encode/H.264 – FFmpeg
https://trac.ffmpeg.org/wiki/Encode/H.264
CentOS6.xにFFmpegをインストールする - Code Life
http://blog.code-life.net/blog/2013/04/14/how-to-install-ffmpeg-on-centos6-x86-64/
どーもくん ギターを弾きまくる 白バック素材:素材をさがす:NHKクリエイティブ・ライブラリー
http://www1.nhk.or.jp/creative/material/dd/D0002040236_00000.html

Top image from "NASA's James Webb Space Telescope Light Fantastic: Laser at Inner Harbor Beams Hubble's Heartbeat".