Edited at

THETAライブストリーミング on レゴマインドストームEv3

More than 3 years have passed since last update.


概要

全天球ライブストリーミング映像を見ながら運転する。

そんな楽しそうな未来に向けて、レゴマインドストームEv3にTHETA Sを載せて、Ev3を操作しながらTHETA Sのライブストリーミング映像を見られるようにしてみました。


※ お断り

今回はDualfishEye動画での配信になります。

参考画像


やること


  • レゴマインドストームEv3(以下Ev3)をROSで遠隔操作する

  • Ev3にTHETA Sを積んでライブストリーミング(DualfishEye)する


    • 将来的には全天球動画にしてHMDで見れるようにしたい



  • 配信されたライブストリーミング映像を見る


    • 視聴環境:Mac PC、iPhone、Android (4.x以上) のみ




実現方法


Ev3を遠隔操作

まずは操作する車の方です。


Ev3ハード設計

Ev3は車型にして、LiveShell2とTHETA Sを積みました。

(きちんと設計しないと、バランス崩して倒れたり、配線に失敗したりします。)


  • Ev3にUSB WiFiドングルをセット (遠隔操作の通信用)

  • LiveShell2とTHETA SをHDMIケーブルで結線

  • LiveShell2にUSB WiFiドングルをセット (配信サバとの通信用)


Ev3ソフト環境構築


動画配信


  • LiveShell2からWiFiドングル経由で配信サバへ転送します

  • 配信サバからHLSで配信します


動画配信サバの設定

今回はAWS EC2インスタンス上に配信サバを構築しました。


EC2インスタンス

EC2インスタンスを起動する際、以下の点に注意してください。


  • EIPをつけない場合は"自動割り当てパブリック IP"を有効化して下さい

  • SecurityGroupで以下のようにRTMP, HTTP用の穴あけをして下さい

ポート
プロトコル
送信元
補足

22
tcp
0.0.0.0/0
接続元IPに絞ってください

80
tcp
0.0.0.0/0
閲覧用HTML取得

443
tcp
0.0.0.0/0
同上

1935
tcp
0.0.0.0/0
RTMP用


nginx + rtmp_module インストール

こちらを参考にさせて頂きました。 => nginx-rtmp-moduleでお試しLive配信環境を作る


  • クライアントは前述のLiveShell2でやるのでスキップ。

  • nginxはyumからも取れますが、rtmp_module込みでビルドしないといけないのでソースから入れました。


HLS配信・閲覧用のHTML配信

こちらを参考にさせて頂きました。 => nginx-rtmp-moduleを使ってスマートフォンへの生放送配信を実験


  • iPhone, Mac, AndroidはHLS形式に対応しているため、デフォルトブラウザで閲覧ができるようになります。


nginxの設定

上記2つのqiitaを参考にして、以下のようになりました


LiveShell2の設定

初期セットアップについては省略。

配信サバへの転送設定について記載します。


  • 設定 (ダッシュボード右上)


    • 配信先サービス : その他配信サービス (サーバーアドレス入力)

    • 配信先URL : rtmp://[配信サバのPublicIP]/hls

    • ストリーム名 : 任意の文字列



  • カスタム (ダッシュボード右上)(設定のちょっと下辺り)




閲覧


  1. 配信サバを起動(EC2/nginxを起動する)

  2. THETA Sをライブストリーミングモードで起動 (参考 : 起動方法)

  3. LiveShell2を起動する


    • ダッシュボードから配信を開始する



  4. ブラウザから配信サバのPublicIPにアクセスするとプレイヤーが表示されるので再生します。

見えました!


今後の課題


  • タイムラグの軽減


    • 回線が重いと結構なタイムラグが発生します

    • LiveShell2の設定の見直し

    • サーバーのスケールアップ



  • DualfishEye動画をスティッチして全天球動画に変換して配信したい

  • 全天球動画をHMDで見たい



関連記事(ご紹介)