pkTriggerCord
カメラはこういう時の遊び用に使っているPentax K20Dなので、リモートコントロールのソフトにはpkTriggerCord (ver. 0.82.04)を使用した。
ソースをダウンロードして、GUIはいらないので、
# make cli
# make install
で、あっさりと完了。
OTGケーブルを経由してK20Dを繋いだら、とりあえず1枚撮影してみる。
# pktriggercord-cli --green -o test.jpg
画面のないEdison上では画像を確認できないので、PCに転送して撮影できていることを確認。
簡単にタイムラプスのテストもしてみた。
# pktriggercord-cli --frames 10 --delay 10 --green -o test
上記のコマンドで10秒毎に10枚撮影してくれる。画像の転送時間を考慮して待ち時間を調整してくれるので、例えば転送に4秒かかったら6秒待機して、正確に10秒毎に撮影をしてくれる。
ImageMagick
ちょうどpkTriggerCordのサイトにタイムラプス撮影の解説もあったので、それに従ってクロップとリサイズもEdison上でやってしまうことにした。
ImageMagick (ver. 6.9.2-4)のソースをダウンロードして、
# ./configure
# make
いくつか警告が出たけれども、エラーはなく終了。
先程撮影した画像でテストしてみると、
# identify test.jpg
identify: no decode delegate for this image format 'test.jpg'
と言われてしまった。
# identify -list configure | grep DELEGATES
で確認してみると、確かにjpegがない。
jpegのライブラリがないのが原因らしいので、インストールする。opkgで探してみると、
# opkg list | grep jpeg
libjpeg8とlibjpeg-devというのが見つかったので、インストールしてみた。
# opkg list | grep jpeg
libjpeg8とlibjpeg-devというのが見つかったので、インストールしてみた。
# opkg install libjpeg8
# opkg install libjpeg-dev
そうしたら、再度
# ./configure
してから、
# make
する。そうすると、
# identify -list configure | grep DELEGATES
DELEGATES bzlib mpeg jpeg xml zlib
となって、identify コマンドもきちんとjpeg画像の情報を表示してくれるようになった。
# identify -list configure | grep DELEGATES
DELEGATES bzlib mpeg jpeg xml zlib
となって、identify コマンドもきちんとjpeg画像の情報を表示してくれるようになった。
FFmpeg
最後はFFmpeg。静止画から動画の変換はEdisonでしなくてもいいかなと思ったけれども、せっかくなので挑戦してみた。
ソースはgitからクローンする。
ソースはgitからクローンする。
# git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
(git クライアントは# opkg install gitでインストールできる。)
# ./configure
を実行すると、prコマンドがなくてエラーになる。prコマンドはcoreutilsに含まれているので、
# opkg install coreutils
でインストール。
すると今度はyasm/nasmがないとエラーがでる。
yasm/nasm not found or too old. Use --disable-yasm for a crippled build.
メッセージの通り、--disable-yasmをつけてやり直し。
# ./configure --disable-yasm
# make
すると、makeの途中でエラーが出た。
libavcodec/x86/cabac.h:192:5 error: 'asm' operand has impossible constraints
gccのインライン アセンブラのエラーらしい。Edisonにインストールされているgccはver. 4.9.1。 NASM (ver. 2.11.08)をインストールしたら何か変るかと試してみたけれども、同様のエラーがでる。
該当のヘッダを使用しているソースを見てみると、H264のデコード関連らしい。今回の目的(静止画から動画への変換)には必要のない機能なので、その機能を除外してmakeしてみた。
# ./configure --disable-decoder=h264
そうすると、エラーになる箇所はスキップしてビルドできた。
ついでなので、色々と試してみたところ、--disable-asmまたは--disable-optimizationsを指定するとH264のデコード機能を生かしたままビルドできた。でも、実際に計測はしていないけれども、恐らく他のコーデックのエンコード/デコード性能も落ちると予想できるので、今回はH264のデコードを諦めることにした。
さらについでに、H264のエンコードをサポートしたい場合は、x264のライブラリをopkgでインスールして、--enable-libx264を指定すれば良いみたい。(このスレッドを参考にした。)
# opkg install libx264-133
# opkg install libx264-bin
# opkg install libx264-dev
# opkg install libx264-staticdev
最終的にconfigureのオプションは以下のようになった。
# ./configure --disable-decoder=h264 --enable-libx264 --enable-gpl
あとはmakeして完了。(ちなみに、ビルドに2時間くらいかかる。)
# ffmpeg -codecs | grep 264
.EV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)
H264のエンコードをサポートしたffmpegのできあがり。
# ./configure --disable-decoder=h264
そうすると、エラーになる箇所はスキップしてビルドできた。
ついでなので、色々と試してみたところ、--disable-asmまたは--disable-optimizationsを指定するとH264のデコード機能を生かしたままビルドできた。でも、実際に計測はしていないけれども、恐らく他のコーデックのエンコード/デコード性能も落ちると予想できるので、今回はH264のデコードを諦めることにした。
さらについでに、H264のエンコードをサポートしたい場合は、x264のライブラリをopkgでインスールして、--enable-libx264を指定すれば良いみたい。(このスレッドを参考にした。)
# opkg install libx264-133
# opkg install libx264-bin
# opkg install libx264-dev
# opkg install libx264-staticdev
最終的にconfigureのオプションは以下のようになった。
# ./configure --disable-decoder=h264 --enable-libx264 --enable-gpl
あとはmakeして完了。(ちなみに、ビルドに2時間くらいかかる。)
# ffmpeg -codecs | grep 264
.EV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)
H264のエンコードをサポートしたffmpegのできあがり。