こんにちは。海行です。

全天球カメラのTHETA SとAndroid端末をUSBケーブルで接続してUSBライブストリーミングを閲覧する事に成功しました。


CUjUjqVUEAIUIQO
  20160201_013352

実際にはTHETA Sを入手後ほどなくして着手していたので2015年11月24日に実現していたのですが、それから多忙になってそのままになってました。
とりあえず現時点の物を公開しようと考えてこの記事を書きました。

↓Android用実証デモアプリをこちらからDLできます。
http://soysoftware.sakura.ne.jp/upload/THETAS/ThetaUSBLiveViewerTest.apk

使い方

1.静止画/動画切り替えボタンを押しながら電源ボタンを押してTHETA Sをライブストリーミングモードで起動してください。

2.USBケーブルでTHETA SとAndroid端末を接続してください。
ただし、ケーブルの相性によってはTHETA Sを認識できない場合があるようです。
私が接続に成功しているのは↓のiBUFFALOのmicroUSB変換アダプタとセリアで買ったmicroUSBケーブルです。
ただし、さらに変換アダプタ側をandroid側に刺さないと認識しませんでした。
CTbQt3TVEAAAcU1

3.THETA Sをandroidが正しく認識するとUSBカメラが接続されましたという旨のシステムダイアログが表示されるので、それで正しく接続されていることを確認してください。

4.デモアプリを起動して画面に表示されるボタンを押してください。画面にTHETA Sの映像が映れば成功です。

経緯


リコーから発売された全天球カメラのTHETA Sには、撮影中の映像を生中継で観れるライブストリーミング機能が付いてます。

以前私は、このTHETA Sをドローンに載せてwi-fiライブストリーミングで操縦者のVRHMDに配信して、さながらタケコプターのような体験を可能にするという旨の漫画を描きました。

しかしこの後で、実際にはTHETA Sのwi-fiライブストリーミングは解像度(640×320)とFPS(FPS10)が低く、臨場感のある体験を得るのは難しい事が判明しました。

現実的に観覧用に利用できるのは、USBライブストリーミング(解像度1280×720 FPS15)とHDMIライブストリーミング(1920x1080i FPS60)の2つでしょう。

通常であればパソコンに接続して使う機能ですが、もっと手軽に持ち歩きながらライブストリーミングが楽しめないか?と考えて、スマホ端末から直接USBライブストリーミングを観れるようにしてみました。

今回のデモアプリは特に使い道が無いですが、ここから発展させていくと色々面白いことができると思ってます。

今後の展望


前述のタケコプターを実現する場合、ワイヤレスHDMIを使う案が有力なのですが、今回のAndroidを介してそこから同じwi-fi上のGear VRに映像を配信したり、あるいはネット越しに配信するなどの実現手段も見えてきます。

ネットで全天球配信をするにしてもPCでなくAndroidから配信できれば気軽に歩きながら配信を行えると思います。

今後ネット全天球配信の流れは(定着するかはともかく)間違いなくやって来ると思われますが、スマホを介しての配信というのは一つのキーを担う可能性があると考えています。

今回はデモアプリの公開となりましたが、今後も色々とやってみて可能性を探ってみたいと思います。

技術的な話


AndroidからUSBCameraの画像を取得するのはこちらのライブラリをお借りしました。↓

https://github.com/saki4510t/UVCCamera

このライブラリはApache License 2.0で提供されています。

Copyright (c) 2014-2015 saki t_saki@serenegiant.com

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0

 

Java上で取得したTHETA Sの画像をUnity側に送り込んでます。
画像の転送にはExternalTextureを利用しました。

参考リンク:
ネイティブで作成したテクスチャを使用する – テラシュールブログ
Low-Level Native Plugin Interface を利用してネイティブから Unity のテクスチャを高速に更新する方法を調べてみた – 凹みTips

 

また、THETA Sから送られてくるDualFishEye形式の画像をUnity上で観るために、Noraさんにより配布されているTheta Shader Packを使わせていただきました。

ただ、THETA Sの個体差によって天球画像の位置が微妙に異なるらしく、そこは何か自動スティッチング技術が必要な所だと思うのですが、今回のデモアプリにはまだ付けてませんが差し当たって手動でキャリブレーションできる機能を付ければいいかなと思ってます。