ラズベリーパイ2
カメラストリーミング

(このページは画像をクリックできません)
カメラを動作させるには特定のバージョン以降のFreeBSDが必要です。ここを参考に環境を整えて、カメラに必要なパッケージをインストールします。
$ pkg install raspberrypi-userland
静止画が撮れることを確認します。HDMIにディスプレイが接続されていれば画面が表示されます。
$ raspistill -t 100 -n -o snap-`date +%Y%m%d-%H%M%S`.jpg
続いて動画ストリーミングです。PCとラズベリーパイ2をHUBで有線接続し、ラズベリーパイ側で以下のコマンドを実行します。

PC側はVLCをインストールしました。早速、ラズベリーパイ2のアドレスとポート192.168.0.50:5000を指定して再生してみます。残念ながら、画面は真っ暗です。データは正常に受けているのですが、画像がデコードされていません。

属性はMPEG−4(h264)になっています。動画のフォーマットはちゃんと認識されているようです。

試にローカルのデジカメで撮ったmp4の動画ファイルを再生してみます。正常に再生されます。

こちらはh264ではなく、MPEG−4(avc1)になっています。ラズベリーパイとの違いは圧縮方式avc1とh264のようです。

VLCで表示できなかったので、mplayerを試してみます。ここを参考に〜mplayerはこれを、ncはこれをダウンロード。mplayerはncコマンドと組み合わせてコマンドプロンプトから実行します。

mplayerでは正常に動画が表示されます。ただし、表示ウインドはクロマキー方式で、ALT+PrtScrではキャプチャできません(笑)。

なので、デジカメでノートPCのLCDを撮影しました。

VLCで表示できないのは何か設定が足らなさそうなので、ネットで調べました。詳細設定のオプションでdemux=h264を指定すれば良いことが判明しました。行きつくまで結構大変でした。

VLCならエフェクトを掛けたりと、いろいろと遊べます。良かった〜

有線がOKなのでwifiで実験してみます。アクセスポイントとPCは有線で接続し、昔、スマホのwifiテザリングのために購入したUSBのwifiアダプタを使用します。

ラズベリーパイ2は以下のように192.168.11.2で無線接続します。

wifiだと320x240の10fpsくらいが限界みたいです。

VLCは詳細設定のデマルチプレクサのh264でfpsが設定できます。

どのくらいの遅延があるかPCの時計を撮影してみます。320x240、10fpsの立ち上げ時でも4〜5秒くらいは遅れているようです。PCの画面の時計などは転送量は少ないですが、もっとダイナミックな画面になれば転送量も増えていき、送信、受信側にあるバッファとの関係で長時間使用していると遅延は増えていくようです。バッファを必要最小限にして、送れなかったフレームを破棄し、なるべく新しいフレームを表示する設定にすれば遅延が短くなると思います。

