2014年6月16日月曜日

Raspberry PI Camera module で撮影した動画を iOS デバイスにリアルタイム配信

Raspberry PI Camera module で撮影するハイビジョン映像を、そのまま HLS で iOS デバイスに送信することを試してみました。

参考にしたのは以下、このままだと胸像反転した映像になるのと、古い画像がプレイリストに残って遅延するので、送信のためのスクリプトは以下のように変更

raspivid -n -w 720 -h 405 -fps 25 -vf -hf -t 86400000 -b 1800000 -ih -o - \
| ffmpeg -y \
    -i - \
    -c:v copy \
    -map 0:0 \
    -f ssegment \
    -segment_time 4 \
    -segment_format mpegts \
    -segment_list stream.m3u8 \
    -segment_list_size 1 \
    -segment_list_flags live \
    -segment_list_type m3u8 \
    "segments/%01d.ts" 


trap "rm stream.m3u8 segments/*.ts" EXIT



セグメンタ(ここでは ffmpeg をその目的で使用)にまだチューニングの余地はありそうですが、とりあえず撮影画像を4秒毎にセグメントに切って配信すると、こんな感じで 8 秒ぐらいの遅延(リアルタイム?)で配信できました。左側の iPad mini の、カンファレンス時計の映像を、左下の Raspberry PI で撮影して HLS で配信し、右側の iPad2のブラウザで再生しています。 

左の iPad mini を撮影して右の iPad2 で再生

配信映像を iOS で受けることができるので、簡易なモニタシステムを素早く安価に設置するなどの目的に便利に使えそうです。

2014年6月8日日曜日

Xively

Xively は同社サイトの紹介によると Internet of Things のためのパブリック・クラウドとのことです。
mbed, TSmarT, Raspberry Pi, Arduino WiFi, Electric IMP など、Internet に接続することのできる様々なデバイスのデータを管理するための PaaS として必要な機能を高い完成度でひととおり揃えた PaaS ということのようです。

Xively のサイトから引用

PaaS だけで考えても野菜工場、気象データ、制御、管制などいろいろな応用が簡単につくれそうですが、xively は便利なことに、さらにデータの送受信のためのデバイス側のソフトウェアツールも提供してくれます。

ということで早速ためしてみました。Xively のサイト で Developer Platform のアカウントを作り、Raspberry PI のチュートリアル どおり、
  1. Raspberry PI に xively の tool をインストール
  2. xively 側にデバイス登録、ここで API_endpoint と API_KEYを取得
  3. サンプル・アプリケーション(ランダムにデータを生成して xively に送信。GPIO につないだセンサの値を送るように変更すればそのまま使えそう...)を、2. のAPI_endpoint とAPI_KEY を引数として実行
ここまで30分、Xively では以下のような表示に
Raspberry PI から送られてくるデータの表示

RaspBerry PI 側のコンソールの表示と Xively の表示を見比べていると、変更は一瞬で反映されています。
Xively には他に SenseMap を創ったり Trigger を設定したりという機能もあるようで、うまく使えばこれまで数人月数約万〜数千万円かかっていたシステム開発が一人で一日〜一週間ぐらいでできてしまうのではないでしょうか