今回はLinux用のリアルタイムで動作するビデオエフェクターをラズパイにインストールしてみたので、それについてレポートします。
本来はIntelアーキテクチャ(IA-32)と PlayStation2用のLinux上で動かすことを想定してプログラミングされたようですが、過去にはARM-Linux向けのパッケージ(apt-get できる)も配布されていたようなので、ラズパイにもインストールできるのでは?と思い取り組んでみました。
インストールと実行の手順は以下のとおりです。
1)必要なパッケージのインストール
SDLのインストール(SDL2ではダメ。)
sudo apt-get install libsdl1.2-dev
libv4l-devのインストール
sudo apt-get install libv4l-dev
2)EffecTVのソースファイルのダウンロード
以下のページから安定版のソースをダウンロードし、適当な場所に解凍する。
http://effectv.sourceforge.net/download.ja.html
3)パッチ
以下のページにあるTimeDistortionのパッチをpatchコマンドであてる。
http://effectv.sourceforge.net/index.ja.html
以下のページにあるパッチ(2種)もあてる。
https://sourceforge.net/p/effectv/discussion/66363/thread/6cdf227b/
(うまくpatchコマンドであたらない場合は、パッチファイルの中身をみて直接書き換える。)
4)ファイル編集
次にconfig.mkの編集を行う。
MMX, NASM, vloopbackは使用しないのでコメントアウトする。
CFLAGS.optの”-march=pentiumpro”部分は削除する。
さらにMakefileの編集も少し行う。(ここが一番悩んだ…。)
Makefileの10行目に-lpthreadを以下のように追記する。
LIBS = v4utils/libv4lutils.a -lm -lpthread 'sdl-config --libs' $(LIBS.extra)
5)makeとmake install
とりあえずエラーで終了せずmakeできたらインストール(sudo make install)する。
以上でEffecTVのラズパイへのインストールは完了です!
では早速試してみましょう。
USBポートにWebカメラを接続します。
lsusbでメーカー名などからカメラが認識できればOKです。
6)起動にはPRELOADが必要
起動時には以下のように指定します。
env LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so effectv
オプションは、effectv –helpで閲覧できます。
見事に起動できました!(読み込み先はデフォルトの/dev/video0)
以上の画面キャプチャは、起動時に -scale 4とオプションをつけて4倍に拡大したものです。DumbTVは読み込んだ素のキャプチャです。それ以外は何らかのエフェクトがリアルタイムにかかった動画になります。全部で46種類もフィルタがあります。試してみたところ1、2個うまく機能していない様子のフィルタがありましたが、それ以外は機能しています。動きもハードウェア・アクセラレーション無しですが滑らかです。
願わくはカメラが1200×1600ピクセルなので、もう少し高解像度でリアルタイム変換してくれたらなのですが、ラズパイでほぼ問題なく動くことが確認できたので満足です。(^_^)V
最後にYouTubeにアップしたのでそちらを是非ご覧ください。
今日のところはこの辺で。