⚠この記事はブログ移転前のアーカイブです

前回Raspberry Pi 2上でlibx265をビルドしました。その続きでlibx265をffmpegにリンクします。

必要パッケージ

sudo apt-get install autoconf build-essential checkinstall git

もう入ってたらこのコマンドはいらないです。

ビルド

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

cd ffmpeg

./configure --prefix=/usr/local --enable-gpl \
--enable-version3 --enable-nonfree \
--enable-static --disable-shared \
--enable-libx265 \
--extra-cflags="-I/usr/local/include -I/usr/include" \
--extra-ldflags="-L/usr/local/lib" \
--enable-memalign-hack \
--pkg-config-flags=--static

make

configureはこれに加えて好きなオプションを加えてください。makeはめちゃくちゃ時間がかかります

ライブラリをリンク

このままでは

$ ldd ./ffmpeg
        /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0x76f1d000)
        libx265.so.79 => not found
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76e9d000)
        librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x76e8e000)
        libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x76e70000)
        libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76e48000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76e28000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76cf8000)
        /lib/ld-linux-armhf.so.3 (0x76f2a000)
./ffmpeg -version
./ffmpeg: error while loading shared libraries: libx265.so.79: cannot open shared object file: No such file or directory

libx265.soがねーよ!と怒られる。

ライブラリをリンクする

sudo nano /etc/ld.so.conf

最後の行に以下の1行を書き込む

/usr/local/lib

ライブラリ更新

sudo ldconfig

ffmpeg でx265のライブラリが見えるように!

./ffmpeg -codecs | grep 265
#####省略#####
 DEV.L. hevc    H.265 / HEVC (High Efficiency Video Coding) (encoders: libx265 )
ldd ./ffmpeg
        /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0x76ef1000)
        libx265.so.79 => /usr/local/lib/libx265.so.79 (0x76d76000)
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76d05000)
        librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x76cf6000)
        libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x76cd8000)
        libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76cb0000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76c90000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76b60000)
        libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76b55000)
        libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x76a83000)
        /lib/ld-linux-armhf.so.3 (0x76efe000)

インストール

sudo make install

お疲れ様でした。

時間ができたらRaspberry Pi 2でのHEVCエンコードパフォーマンスの測定をしてみたいと思います。