1.概要
前回のまとめ以降、ようやく触る時間と機材が出来たのでUnity上でTHETA SのHDMI Liveviewを追試しました。
イメージとしては凹みさんの
です。
- THETA Sの取得できる画像、動画フォーマット一覧
- HDMIキャプチャ方式のハードウェア紹介
- Unity上でのHDMIキャプチャ経由の動画読み込み方法
- Unity上での Dual Fish Eye → Equirectangular変換
みたいな内容です。
2.THETA Sの取得できる画像、動画フォーマット一覧
こんなイメージです。 今回はHDMI Dual FishEyeを使います。
非リアルタイム
- 静止画 5376 x 2688 Equirectangular
- 動画 1920 x960 Equirectangular
リアルタイム
- Dual Fish Eye (HDMI 1920 x 1080 インタレース60FPS)
- Dual Fish Eye (USB2.0 UVC 1280 x 720 30FPS)
- Equirectangular (スティッチ済みライブビュー、THETA API 640x320 MJPEG ストリーム)
3.HDMIキャプチャ方式のハードウェア紹介
HDMIからのキャプチャボードは色々な種類があります。最近だとスプラトゥーンの録画などでも皆さま買われてますが、あれも使えます。 OSから見た時に
- UVC(Webカメラ)として見える物
- キャプチャボード(direct showフィルタ)で見える物
という2種類の物が今回は使えます。 市場に出ているのは殆どすべてが2.です。
a.UVC-HDMIキャプチャボード Febon198(今回の秘密兵器!)
以下の2個をセットで買いましょう!
Febon198 http://www.amazon.co.jp/dp/B014QQXKVO/armneon-22/www.amazon.co.jp
HDMI Signal Converter
Febon198は OSからはUSB3.0の1080Pで60FPSなWebカメラとして見える、Febon198内の遅延は50-80ms程度(*1)、というトンデモないスペックの一品です。
デメリットは
などです。
Febon198はプログレッシブ信号しか受け付けないので、THETA含むデジカメからのインタレースな1080iなHDMI信号を読ませるには
HDMI Signal ConverterみたいにHDMI信号をなんでも1080Pに変換してくれるオモチャボードを通しましょう。
PCモニタ出力やXBOXの出力は1080Pなので、そういうのをキャプチャするだけならオモチャボードは不要なのですが、デジカメからの信号はインタレースが多いようです。ご注意ください。
セットで買わないと、こんな風に寝込む羽目になります。
届きました!結論から言うとTheta SのHDMIストリーミングは読めませんでした!
— 絵麻さんを養って幸せな家庭を築く (@izm) 2015年10月29日
おそらくTheta SのHDMIからは1080iの信号が出ていて、このボードは1080p専用なので、読めない感じですね。無念。代わりにPS3とかXBOX360からは読めます><
2万のキャプチャボードギャンブルに負けたので寝込みます😹😹😹
— 絵麻さんを養って幸せな家庭を築く (@izm) 2015年10月29日
b. 定番:BlackMagic Intensity Shuttle
ご存じ定番のBlackMagic!
なんでも読めるし、SDKも公式配布でフレームごとガバっと持ってこれて最高です。
http://www.amazon.co.jp/dp/B007ZDHDRS/armneon-22/www.amazon.co.jp
これを使えば大体のHDMI信号は読めます。ド定番!最高!!
b. その他キャプチャボード
遅延が大きいハズレもあったりする印象。2万円程度?
TL見てて動いたという話があるのはGC550など
http://www.amazon.co.jp/dp/B00ZOXYQ26/armneon-22/www.amazon.co.jp
4.Unity上でのHDMIキャプチャ経由の動画読み込み方法
a. UVCキャプチャボード
Unity標準のWebCamTextureを開いて再生するだけです! こんな感じのスクリプトを、適当にUnityのPlaneにアタッチします。 Thetaの再生用 · GitHub
b. DirectShowフィルタキャプチャボード
ここが結構大変な印象です。
BlackMagic系や、一般的なキャプチャボードなら AVPro Live Camera
https://www.assetstore.unity3d.com/jp/#!/content/3683 を使えば大丈夫だと思います。トライアル版で必ず事前に動作は確認してください。
尚、このアセットですが 200ドル と、比較的お高いです
(だからこそFebon 198を今回お勧めしてます。こっちは読むのタダですからね!) (他に安価な手段があるかもしれません。情報お待ちしてます!)
5.Unity上での Dual Fish Eye → Equirectangular変換
凹みさんの方法(前述)と
Stereoarts(Noraさん )の方法があります。 Stereoarts Homepage (Theta Shader Pack)
今回は後者のNoraさんのTheta Shader Packを試しました。
手順を念のため録画しました。一発撮りです。
Theta shader Packと、このスクリプトで作業しました。(部屋が散らかっていてお恥ずかしい) Thetaの再生用 · GitHub
Unity上でビルドしたexeを動作確認用に置いておきます。 Febon 198か、USB接続のLiveviewモードなら、再生できると思います。 https://copy.com/L6wAq9dYdIOrIHp1
6.今後やりたいこと
生放送時のパノラマ配信インフラがどこかにないかなあと気になってます。ちゃんとした法人契約じゃなくても、個人でちょろっと試せる場があると嬉しいです。
補足
HDMIキャプチャボード越しの遅延チェック
*1:本家スペック表による。 Theta→Febon198→Unityの遅延はこんな感じで測ると260-300ms程度です。どうやらThetaの絵を読み込んでHDMIから出すまでは、100ms以上のタイムラグがあるようです。
ThetaS(HDMI) →Febon 198 → Unity の速度 は遅延として30ms-50msくらいですね。有体に言いまして、メチャクチャ速い!!
— 絵麻さんを養って幸せな家庭を築く (@izm) 2015年11月4日
Cc: @koukiwf さん pic.twitter.com/bIcItg1FO6
THETA SのUSBライブビューモードの認識手順
USBケーブルをPCとつながずに 写真動画切り替えボタンを押しながら電源を入れる→LiveviewモードになってからPCにUSBケーブルを刺す
という順番です。意外と忘れがちです。
ライブビュー経由で見る時の画質劣化
Dual Fish Eyeの時の実効解像度から考えて
- HDMI経由で130万画素相当
- USB経由で50万画素相当
くらいまで欠落してます。1920x960のスティッチ済み動画と比べるとHDMI経由でも3-4割くらい落ちてる雰囲気です。