Proxy 経由で接続する

Proxy 接続設定を行うことで、外部ネットワークへの通信に Proxy 経由が必須である環境においても、 ライブストリーミング関連の通信全体(WebSocket 接続及び、WebRTC トランスポートプロトコル)を Proxy 経由にすることができ、Live Streaming API が利用できます。

Web SDK を使用する場合は、Web ブラウザの機能で Proxy 経由の接続を行うことができるため、そちらをご利用ください。 その他の SDK を使用する場合は、 後述する Proxy 接続設定 API を使用することで、 Proxy 経由の接続を行うことができます。
※ Proxy 接続設定 API は現在 Android SDK のみ対応

Proxy 接続設定は connect() メソッドの Option 指定で行います。
option.proxy として ProxyOption を設定することで Proxy 設定を行うことができます。

url は以下の形式の文字列です

http://<username>:<password>@<proxyhost>:<proxyport>/

Proxy 接続設定 (Android)

option.proxy の設定は、Android SDK では Option.Builderproxy() メソッドで行えます。
また、Proxy 接続は iceServers に使用する TURN Protocol が TCP/TLS の際に適用されるため、option.iceServersProtocol の設定により UDP 通信が発生しないようにすることで、proxy 経由を必須とすることができます。

設定例

val option = Option.Builder()
  .sending(SendingOption(true))
  .receiving(ReceivingOption(true))
  .iceServersProtocol(IceServersProtocol.TLS)
  .proxy("http://user:pass@proxyhost:3128/")
  .build()

client.connect(clientID, accessToken, option)

Proxy 接続設定 (THETA)

THETA で Proxy を利用する場合、「Proxy 接続設定 (Android)」の設定に加えて、THETA 本体への設定が必要となります。
設定は THETA Web API v2.1 を用いて行います。

THETA 本体への設定

無線 LAN を使用する場合と 有線 LAN を使用する場合とで設定コマンドが異なります。

無線 LAN の設定

camera._setAccessPoint コマンドで_proxy を設定する

有線 LAN の設定

camera.setOptions コマンドで_proxy を設定する

THETA 本体からの取得

プラグインで THETA Web API v2.1 を使用すれば、Live Streaming API の Proxy 設定に使用する値を THETA 本体から取得することができます。
※ ただしセキュリティ保護の観点から password は Web API では取得できないため、別途プラグインに受け渡しておく必要があります。

ネットワーク種別(無線 LAN or 有線 LAN)の取得

camera.getOptions コマンドで _networkType を参照する

無線 LAN 設定の取得

camera._listAccessPoints コマンドで アクセスポイントの _proxy を取得する

有線 LAN 設定の取得

camera.getOptions コマンドで _proxy を取得する

THETA Web API v2.1 利用例

curl を用いた 無線 LAN Proxy 設定の例

curl -H "content-type: application/json; charset=utf-8" -X POST \
localhost:8080/osc/commands/execute -d '{\
  "name": "camera._setAccessPoint",\
  "parameters": {\
    "_proxy": {\
      "use": true,\
      "url": "192.168.0.1",\
      "port": 3128,\
      "userid": "user",\
      "password": "pass"\
    },\
    .... // その他の設定
  }\
}'

この情報は役に立ちましたか?