Home

Awesome

Sora Labo ドキュメント

これは時雨堂が提供している Sora Labo のドキュメントです。 ご利用前にかならずご確認いただきます様、お願いいたします。

ステータスページ

https://shiguredo.onlineornot.com

お知らせ

Sora クラスターのノード数を 20 に増やしました

日時: 2024-11-21

JWT プライベートクレームを追加し、検証用の metadata 項目を廃止しました

日時: 2024-10-28

今後は metadata に指定するのではなく、JWT のプライベートクレームに指定して利用してください。

Sora クラスターの構成を変更しました

日時: 2024-08-30

Sora の構成を一新しました

日時: 2024-05-29

Sora Labo で提供する Sora の構成を一新しました。

Sora クラスター

Sora マルチリージョンクラスター

Sora IPv6 オンリー

古いお知らせ

OLD_NEWS.md をご覧ください。

FAQ

Sora Labo は検証目的以外での利用を禁止しています

Discord

アナウンスなどの情報共有は全て Discord を利用しています。

https://discord.gg/shiguredo

#sora-labo へどうぞ

制限

禁止

商用利用やアカデミック利用について

Sora Labo は商用利用は許可しておりませんので、以下をご検討ください。

利用可能な SDK やクライアント、ライブラリ

比較表

Sora Labo は検証目的以外での利用はできません。それ以外は Sora Cloud_または Sora をご検討ください。

機能Sora LaboSora CloudSora
タイプSaaSSaaSパッケージ
商用利用不可、検証目的のみ
アカデミック利用不可
同時接続1 チャネル 10 程度制限なしライセンスに依存
帯域制限あり制限なし自由
認証アクセストークンアクセストークン自由
ウェブフック不可
API不可一部を除いて可
録画不可
運用不要不要必要
構築不要不要必要
サポート無し有り(チケット)有り(メール)

利用方法

アクセストークンを生成する

アクセストークンは Sora Labo のダッシュボードで作成可能です。

Image

シークレットキーをアクセストークンとして利用する

アクセストークンを生成せずに、シークレットキーをそのままアクセストークンとしても利用可能です。

Sora DevTools を利用する

Sora DevTools という開発者ツールを https://sora-devtools.shiguredo.jp/ にデプロイして公開しています。

ダッシュボードページに Sora DevTools をSora Labo 経由で利用できるように、 チャネル ID とアクセストークンとシグナリング URL 埋め込んである URL を用意してあります。

Image

Sora JavaScript SDK を利用する

Sora JavaScript SDK のサンプル集を利用して Sora Labo に接続できます。

WebRTC SFU Sora JavaScript SDK サンプル集

git clonepnpm install した後、sendrecv ディレクトリの .env.local.sample.env.local に変更して以下の値を設定してください。

VITE_DEFAULT_SIGNALING_URL=wss://sora.sora-labo.shiguredo.app/signaling
VITE_DEFAULT_CHANNEL_ID=<自分の GitHub Username>_<自分の GitHub ID>_<好きなチャネル名>
VITE_DEFAULT_ACCESS_TOKEN=<アクセストークン>

その後は pnpm run sendrecv で実行可能です。

Sora Android SDK を利用する

shiguredo/sora-android-sdk: WebRTC SFU Sora Android SDK

Sora Android SDK のクイックスタートまたはサンプル集を利用して Sora Labo に接続できます。

gradle.properties の作成

クイックスタートまたはサンプル集のディレクトリトップの gradle.properties.example を元に gradle.properties を作成します。

gradle.properties の作成:

cp gradle.properties.example gradle.properties

接続情報の設定

gradle.properties に Sora Labo への接続情報を設定します。

gradle.properties への設定例:

# Setting Sora's signaling endpoint and channel_id
signaling_endpoint = wss://sora.sora-labo.shiguredo.app/signaling
channel_id         = shiguredo_0_sora

# Setting Signaling Metadata.
# Quotes must be double escaped.
# e.g.) signaling_metadata = {\\"spam\\":\\"egg\\"}
# This setting is required. If you do not want to use it, set it to blank.
signaling_metadata = {\\"access_token\\":\\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFubmVsX2lkIjoic29yYUBzaGlndXJlZG8jMCJ9.TYP-iQaMNcGF7xSxoa8QyqBveUyUQ6EobBc1djg1_is\\"}

Sora iOS SDK を利用する

shiguredo/sora-ios-sdk: WebRTC SFU Sora iOS SDK

Sora iOS SDK のクイックスタートまたはサンプル集を利用して Sora Labo に接続できます。

Environment.swift の作成

クイックスタートまたはサンプル集の Environment.example.swift を元に Environment.swift を作成します。

Environment.swift の作成:

cp Environment.example.swift Environment.swift

接続情報の設定

Environment.swift に Sora Labo への接続情報を設定します。

Environment.swift への設定例:

// 接続するサーバーのシグナリング URL
static let urls = [URL(string: "wss://sora.sora-labo.shiguredo.app/signaling")!]

// チャネル ID
static let channelId = "shiguredo_0_sora"

// metadata
static let signalingConnectMetadata = ["access_token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFubmVsX2lkIjoic29yYUBzaGlndXJlZG8jMCJ9.TYP-iQaMNcGF7xSxoa8QyqBveUyUQ6EobBc1djg1_is"]

WebRTC Native Client Momo で Sora を利用する

shiguredo/momo: WebRTC Native Client Momo

Momo で Sora が利用できます。

GitHub Username が shiguredo で、 チャネル ID が sora-devtools の場合:

./momo --resolution VGA --no-audio-device sora --auto \
    --signaling-url wss://sora.sora-labo.shiguredo.app/signaling \
    --channel-id shiguredo_0_sora \
    --role sendonly --multistream true --video-codec-type VP8 --video-bit-rate 2500 \
    --metadata '{"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFubmVsX2lkIjoic29yYUBzaGlndXJlZG8jMCJ9.TYP-iQaMNcGF7xSxoa8QyqBveUyUQ6EobBc1djg1_is"}'

Sora DevTools のマルチストリーム受信を開いて接続してみてください。

Image

AV1 を利用する

上記ブラウザや Momo を利用する事で、 AV1 が利用可能です。

H.265 を利用する

Safari Technology Preview 最新版で H.265 を試すことが可能です。

OBS (WebRTC/WHIP) で配信する

手順

  1. OBS をダウンロードする
  2. OBS に WHIP エンドポイント URL を指定する
  3. OBS の Bearer Token にアクセストークンを指定する

OBS のダウンロード

OBS の WebRTC/WHIP は 30.0.0 から対応しています。

30.0.0 は以下からダウンロード可能です。

https://github.com/obsproject/obs-studio/releases/tag/30.0.0

OBS (WebRTC/WHIP) の設定

  1. サービスで WHIP を選ぶ
  2. サーバーに WHIP エンドポイントを指定する
    • https://sora.sora-labo.shiguredo.app/whip/{channel_id}
    • channel_id{github-username}_{github-id}_{channel_name} です
  3. Bearer Token にアクセストークンを指定する

OBS (WebRTC/WHIP) の設定例

以下は macOS の H.264 HWA を利用して 1080p 60fps で配信する際の設定例です。

Image

Image

Image

認証方法

チャネル ID を決める

アクセストークンを利用してチャネルに認証をかけてみます。

チャネル ID は GitHub アカウントのユーザ名を先頭に指定する必要があります。

<自分の GitHub Username>_<自分の GitHub ID>_<好きなチャネル名> と指定する必要があります。

以下はチャネル名 sora-devtools 、Github ユーザ名 shiguredo 、GitHub ID 0 を指定した例です。

チャネル ID 例

shiguredo_0_sora-devtools

metadata に access_token を指定する

Sora の SDK は metadata をシグナリング時に指定できます。metadata に access_token を指定して下さい。 これで利用可能になります。

アクセストークンが eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFubmVsX2lkIjoic29yYUBzaGlndXJlZG8jMCJ9.TYP-iQaMNcGF7xSxoa8QyqBveUyUQ6EobBc1djg1_is の場合

{"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFubmVsX2lkIjoic29yYUBzaGlndXJlZG8jMCJ9.TYP-iQaMNcGF7xSxoa8QyqBveUyUQ6EobBc1djg1_is"}

検証向け機能

metadataaccess_token に JWT を指定する際、JWT のプライベートクレームに検証用のクレームを指定できます。

TURN-TCP 利用強制機能

指定した接続が TURN-TCP を利用するように強制可能にする機能です。

JWT のプライベートクレームに turn_tcp_only を boolean 型で指定してください。

TURN-TLS 利用強制機能

指定した接続が TURN-TLS を利用するように強制可能にする機能です。

JWT のプライベートクレームに turn_tls_only を boolean 型で指定してください。

クラスターアフィニティ有効化機能

同一セッションの接続を同一ノードに集約する機能です。

JWT のプライベートクレームに cluster_affinity を boolean 型で指定してください。

Sora Labo のアカウントを削除する

アカウントは削除しますが、ログは削除しないためアカウントを削除したとしても利用時間はリセットされません

もし今後、 Sora Labo を利用しないのであればアカウントを削除できます。

ダッシュボードの一番下にアカウントの削除があります。