RICOH Live Streaming 共通仕様

用語定義

Client

本 API にリクエストするブラウザや Android 等のネイティブアプリなどのクライアントを表す。

Server

本 API のサーバ。

ClientApp

本サービスを利用するアプリケーションやクライアントの単位。ClientApp ごとに認可範囲は独立する。

Room

いわゆるルーム型会議のためのルーム。Roomには以下の2種類がある。

  • P2P Room
    • 各 Connection が別の Connection に Track を送信する

P2PRoom

  • SFU Room
    • SFU Server を介して Track を送信する

SFURoom

RoomInstance

本サービス内で管理される Room の生死単位。RoomInstance はある room_id に対して、 Connection の入室数が 0→1 になったタイミングで生成され、 1→0 になったタイミングで消滅する。

Connection

Room に参加する Client の単位。アプリケーション上では同一アカウントとして認証される端末でもブラウザのタブが違えば別の Connection となる。

ConnectionInstance

本サービス内で管理される Connection の生死単位。ConnectionInstance はある Server で認証成功した時点で生成され、Server から切断した時点で消滅する。

Track

WebRTC のMediaStreamTrack と、それに紐づく Metadata を持つオブジェクト。いわゆる映像トラックや音声トラック。Trackには以下の2種類がある。

  • LocalTrack
    • ある Connection から見て自らが生成した Track。主に自映像。
  • RemoteTrack
    • 自らが生成していない Track。主に相手の映像。

Metadata

Track や Connection に付与されるメタ情報を表す。例として、拠点名、アプリケーション内の User ID、ブラウザ名、360映像の射影形式、などが考えられる。

用語間の関係

用語間の関連

ある単位時間では Room に紐づく RoomInstance および Connection に紐づく ConnectionInstance は 0 か 1。連続した時間で見ると関連度が*になる。

Room や Connection は本サービスでは関与しない ClientApp 側のライフサイクルで生死が決まるエンティティを想定している。例としてこれらのライフサイクルをシーケンスで示すと以下のようになる。

ライフサイクル

データ定義

データ型

IDString

主にアプリケーションが生成するアプリケーション開発者が利用するIDで利用する。

  • 1 文字以上 255 文字以下
  • ASCII
  • 以下の文字のみ許可
    • 英数字
    • 次の記号: .%+^_"`{|}~<>\-
  • 正規表現の例
    • JavaScript: /^[a-zA-Z0-9.%+^_"`{|}~<>\-]{1,255}$/
    • Ruby: /\A[a-zA-Z0-9.%+^_"`{|}~<>\-]{1,255}\z/

属性

  • Room#room_id
    • IDString
    • ClientApp 内ユニーク
  • Room#classification_label
    • IDString
    • ClientApp 内ユニーク
  • Connection#connection_id
    • IDString
    • Room 内ユニーク
  • Metadata: {[key: IDString]: any}
    • キーバリューの組数は 0 以上 32 以下
    • キー: IDString
    • バリュー:
    • データ構造や型は JSON にシリアライズできる全てが許容される
    • UTF-8でエンコードできる全ての文字が許容される
    • JSON にエンコードされて 0 文字以上 1024 文字以下

RoomInstance 制約

  • 最大継続時間: 24 時間
  • 最大接続数: 無制限

ConnectionInstance 制約

  • 最大継続時間: RoomInstanceが継続しているまで