HYLOGICS

今後は各分室にコンテンツを移して、ここは雑記や暮らしを中心としたライフログ的な何かにしていく予定です。

Linuxで動画をエンコードするためにffmpegを導入する

今まではchinachu導入時にビルドされたバイナリを使ってエンコードしていたのですが、ffprobeで動画の情報取得に失敗するのでffmpeg/ffprobeだけ自分で入れ直すことにしました。

Download FFmpeg

VideoLAN - x264, the best H.264/AVC encoder

検証用の環境

今回はConoHaに建てたVM上で検証してます。

CentOS 6.7 x64

バイナリ

FFmpeg Static Builds

とりあえず使いたいなら一番手軽だとは思います。最新版が起動するところまでは確認しました。

パッケージ

RPM Fusion - RPM Fusion

rpmfusionのレポジトリを追加すればパッケージ版を入れることも可能だけど随分バージョンが古い。。。

rpmforgeにもパッケージはありますが0.6.5とrpmfusionよりバージョンが古い。

お手製ビルド

結局これが一番無難かもしれない。

必須パッケージの追加

$ sudo yum install yasm
$ rpm -qi yasm

x264のビルド

libx264のエンコーダが必要ない人は飛ばして良いと思います。

$ wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20151121-2245-stable.tar.bz2

$ tar -xjf ./x264-snapshot-20151121-2245-stable.tar.bz2

$ cd x264-snapshot-20151121-2245-stable

$ ./configure --enable-shared

$ make

$ sudo make install

注意点

$ ls /usr/local/lib/*so
/usr/local/lib/libx264.so

標準だと/usr/local/lib配下にインストールされるので読み込まれません。 configure時に--libdir /lib64などでパスを変更するか、以下の通りパスを追加してあげて下さい。

$ sudo echo "/usr/local/lib" > /etc/ld.so.conf.d/libx264.conf
$ sudo ldconfig

ffmpegのビルド

$ wget  wget http://ffmpeg.org/releases/ffmpeg-2.8.2.tar.bz2

$ tar -xjf ./ffmpeg-2.8.2.tar.bz2

$ cd ffmpeg-2.8.2

$ ./configure --enable-libx264 --enable-gpl

$ make

$ sudo make install

確認

バージョン確認

$ which ffprobe
/usr/local/bin/ffprobe

$ ffprobe -version
ffprobe version 2.8.2 Copyright (c) 2007-2015 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)

$ which ffmpeg
/usr/local/bin/ffmpeg

$ ffmpeg -version
ffmpeg version 2.8.2 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)

テスト

$ ffmpeg -i t.m2ts -vcodec libx264 -s 720:540 -strict -2 t.mp4
$ ffprobe -i t.mp4

問題がなければ以上で完了です!