読者です 読者をやめる 読者になる 読者になる

Take’s diary

Macとマイコンに関すること--ワクワクの製作日記

Raspberry Pi2 で自分の作ったプログラム 動画 をちょっと高速に Web 配信しませんか?(その1)

                             

        今回の目標:全部1つのPi2から動画配信しているところ。

            Openframeworksでビルドしたアプリを動かしています。

 Raspberry pi で動画配信するソフトは、mjpeg-streamerが有名で、インストールやセッティングもWEBを調べれば簡単です。でも使っているうちに次のような不満が出てきました。

  1. PiはYUB変換オプションを付けないと動かないため、動画配信スピードが遅い
  2. 自分で作成したプログラム動画配信ができない

 1に関しては接続しているWebカメラからの動画をSafariで再生した場合、YUB変換オプションの必要がないEdisonと比べると明らかに遅くなります。

 2に関しては、Python で動作可能なSimpleCVというライブラリがありますが、明らかに遅い(カクカク)ので少し不満です。

 他にWebカメラの選択についてですが、日本のメーカやらMicrosoft製品やらいろいろ試してみましたが、総じてホワイトバランスが非常に悪く(linuxに限る)使い物になりません。買って一番安心なのはロジクール製品です。千円台の最低のものでも、画像の良さは一目瞭然です。

 話がちょっと逸れましたが、先の不満を解決する方法の一つにOpenframeworksのアドオンを使う方法があります。今回は、pi2でofxHTTPというアドオンを使ったWeb配信を実現できたので内容を説明します。Raspbery pi でのOpenframeworks実現を含めて、私のようなlinuxもCも少ししかわからないものにとってはかなり大変でした。最初にOpenframeworksのセットアップ方法をメモします。

Openframeworksをpi2へセットアップ

2016/4/30時点でRaspberry Pi(B+,Pi2,Pi3)に関してはarm6に統一されています。

 このページからダウンロードします-->openFrameworks

linux arm7を選択します。pi2に関するインストール方法はsetup guideを参考にして下さい。http://forum.openframeworks.cc/t/raspberry-pi-2-setup-guide/18690

 ちょっと前まではこんなに簡単にインストールできなかったのですが、だいぶ改善されたみたいです。

 Xwindowのファイルマネージャーで直接実行ファイルをダブルクリックしても良いのですが、以下のように、キーボードが効かなくなることがあるので、SSH接続したターミナルソフトで実行(所定フォルダに移動して make run )した方がctrl+cが効くので安全のようです。

 最初のテスト(Example)の実行に関係ファイルをすべてコンパイルするので、かなり時間がかかりますが(20分ぐらい)、その後の新たなコンパイルはかなり速くなります。(Mac版と比べれば雲泥の差だが、我慢できる程度)

Openframeworksのpi2版で戸惑ったこと

実行Windowが移動しない!!

 MacのOpenframeworksだとマウスで実行Windowの移動や終了ができるのですが、pi版の場合は、左上に固定です。当初は一種のエラーだと思っていたのですが、これが正解です。実行中のプログラムを終了するには、escキーを押します。

f:id:TAKEsan:20150719204947p:plain

       piの場合は実行Windowが上記のように固定となる。

マウスもキーボードも使えなくなる!!

 pi版では、USBのパワー不足とか解説がありますが、別電源のUSBハブをつけても、場合によりあまり効果がないようです。無線接続のキーボードで、マウス機能が付いているものと、単独のマウスを同時に使うとこのような症状が出るみたいです。

この問題はその後解決しています。以下の記事に書いています。

takesan.hatenablog.com

肝心の実行スピード

 上記のExampleの場合(3DPrimitivesExample)私のiMacだとフレームレイトが60ですが、pi2の場合は37(pi3になると60!!)くらいでした。 クロックスピードを考えると、かなり早いし、なめらかに動くので、実用上はほとんど問題ないと思います。

 とにかく私のようなプログラム未熟者にもポインタなどを意識しないで、ネイティブプログラムを簡単に作成できるので、Openframeworksはオススメです。

 

ofxHTTPというアドオンを使った動画配信の実現方法は、その2に続く......。

takesan.hatenablog.com