RICOH Live Streaming 共通仕様
目次
用語定義
Client
本 API にリクエストするブラウザや Android 等のネイティブアプリなどのクライアントを表す。
Server
本 API のサーバ。
ClientApp
本サービスを利用するアプリケーションやクライアントの単位。ClientApp ごとに認可範囲は独立する。
Room
いわゆるルーム型会議のためのルーム。Roomには以下の2種類がある。
- P2P Room
- 各 Connection が別の Connection に Track を送信する
- SFU Room
- SFU Server を介して Track を送信する
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
RICOH Live Streaming で使用する IDの型。
以下の形式である必要があります。
- 1 文字以上 255 文字以下
- ASCII
- 以下の文字のみ許可
- 英数字
- 次の記号:
.%+^_"`{|}~<>\-
- 正規表現の例
- JavaScript:
/^[a-zA-Z0-9.%+^_"`{|}~<>\-]{1,255}$/
- Ruby:
/\A[a-zA-Z0-9.%+^_"`{|}~<>\-]{1,255}\z/
- JavaScript:
属性
- 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が継続しているまで
Web API後方互換性
提供するWeb APIにおいて以下の変更は互換性が維持されるものとする。互換性が維持される変更は予告なく実施される場合がある。
- リクエスト
- サーバが受け付けるパスの追加
- サーバが受け付けるHTTPメソッドの追加
- クライアントが任意で追加できるHTTPヘッダの追加
- クライアントが任意で追加できるJSONオブジェクト属性の追加
- サーバが受け付ける範囲を拡大する数値や文字列や配列長のバリデーション変更
- レスポンス
- JSONオブジェクト属性の追加
- 仕様として明記されていないHTTPヘッダの追加変更削除
- 返却する範囲を縮小する数値や文字列や配列の形式の変更
- リクエスト要素が追加された際にその追加要素をリクエストに直接的および間接的に含む場合のみ発生する変更
- 追加要素をリクエストに間接的に含む例: リソース/aの属性bを新規列挙要素"c"でPUTで更新した後に、リソース/aをGETで取得するとレスポンスの属性bが"c"になっている