Raspberry Pi で FFmpeg を使う
Raspberry Pi で apt を使った FFmpeg のインストールを試したところできなかったので、
FFmpeg をクロスコンパイルする方法と、実機上でコンパイルする方法をまとめてみました。
※実機でコンパイルだけでもいいんだけど、お勉強のため
クロスコンパイル環境は下記で作ったものがあることが前提です。
ちなみに、生成にかかる時間はクロスコンパイルしたほうが圧倒的に早いです。
前提と前準備
【クロス】前準備
・Cコンパイラのプレフィックスを設定しておく
export CCPREFIX="/path/to/cross/compiler/install/directory/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-"
※パス(/path/to/cross/compiler/install/directory)は自身の環境に合わせて設定すること
1. 関連ライブラリのビルド
1.1. libx264 のビルド
【共通】ソースを git からコピーする
git clone git://git.videolan.org/x264
【共通】・ディレクトリ移動
cd x264
1.2. ALSA のビルド
AlsaProject は Linux の音声入出力用のライブラリ。
【共通】ソースのダウンロードと展開
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.1.tar.bz2 tar xjvf alsa-lib-1.1.1.tar.bz2
【共通】ディレクトリ移動
cd alsa-lib-1.1.1/
2. FFmpeg のコンパイル
【共通】ソースを git からコピーする
git clone git://source.ffmpeg.org/ffmpeg.git
【共通】ディレクトリ移動
cd ffmpeg
【クロス】クロスコンパイルする場合
・クロスコンパイル用の設定を行う。
./configure\ --enable-cross-compile\ --cross-prefix=${CCPREFIX}\ --arch=armel\ --target-os=linux\ --prefix=/home/hoge/ffmpeg/output\ --enable-gpl\ --enable-libx264\ --enable-nonfree\ --extra-cflags="-I/home/hoge/ffmpeg/output/include"\ --extra-ldflags="-L/home/hoge/ffmpeg/output/lib"\ --extra-libs=-ldl
【実機】実機でコンパイルする場合
・実機用の設定を行う。
./configure\ --enable-gpl\ --enable-libx264\ --enable-nonfree\ --extra-cflags="-I/home/hoge/ffmpeg/output/include"\ --extra-ldflags="-L/home/hoge/ffmpeg/output/lib"\ --extra-libs=-ldl
3. 動作確認
【クロス】クロス環境から Raspberry Pi にコピーする
・「/home/hoge/ffmpeg/output/bin」の ffmpeg を Raspberry Pi にコピーする。
※コピーは下記記事のように Raspberry Pi で Samba を使えるよう設定しておくと便利。
・コピーの際に実行権限が消えてしまっている場合は実行権限を付加する。
chmod 755 ffmpeg
・とりあえず、help を表示させる
./ffmpeg -h
うまくいけば、色々表示されるはず
ffmpeg version N-81043-ga49ed9e Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.8.3 (crosstool-NG linaro-1.13.1-4.8-2014.01 - Linaro GCC 2013.11) 20140106 (prerelease) configuration: --enable-cross-compile --cross-prefix=/path/to/cross/compiler/install/directory/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- --arch=armel --target-os=linux --prefix=/home/hoge/ffmpeg/output --enable-gpl --enable-libx264 --enable-nonfree --extra-cflags=-I/home/hoge/ffmpeg/output/include --extra-ldflags=-L/home/hoge/ffmpeg/output/lib --extra-libs=-ldl libavutil 55. 28.100 / 55. 28.100 libavcodec 57. 50.100 / 57. 50.100 libavformat 57. 42.100 / 57. 42.100 libavdevice 57. 0.102 / 57. 0.102 libavfilter 6. 47.100 / 6. 47.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 1.100 / 2. 1.100 libpostproc 54. 0.100 / 54. 0.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... …省略
補足
・「ldd ffmpeg」で共有ライブラリの依存関係を確認する。
hoge@raspberrypi:~ $ ldd ffmpeg linux-vdso.so.1 (0x7ef77000) /usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76f80000) libasound.so.2 => /usr/lib/arm-linux-gnueabihf/libasound.so.2 (0x76e93000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76e18000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x76e01000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76dee000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76dc6000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76c84000) /lib/ld-linux-armhf.so.3 (0x54af0000) hoge@raspberrypi:~ $
※上記にlibx264等がなければスタティックビルドに成功している。
参考(情報が古い):CompilationGuide/RaspberryPi – FFmpeg
- 作者: 月村潤,本間雅洋,堀田直孝,原一浩,足立健誌,尾花衣美,堀内康弘,寺田学
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/01/29
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 240回
- この商品を含むブログ (26件) を見る