SkyWay Python SDK¶
SkyWay Python SDK は、Python で作成されたアプリケーションから SkyWay を利用するための SDK です。本 SDK を利用することで、Python のアプリケーションでリアルタイムに映像・音声データを受信し、任意のデータ送信を行うことができます。
提供状況
Python SDK は現在 β 版として提供しています。
対応している通信方式¶
P2P での publish / subscribe にのみ対応しています。SFU には現在対応していません。
対応環境¶
以下の環境で動作することを確認しています。
- OS: Linux(Ubuntu 24.04), macOS, Windows
- Python: 3.10 以上
対応コーデック¶
以下のコーデックについて、動作することを確認しています。
- 映像の受信
- H264
- VP8
- 音声の受信
- Opus
インストール方法¶
pip コマンドを用いて、PyPI からインストールできます。
概要¶
SkyWayを利用するためには、通信を開始するまでに以下のステップを踏む必要があります。
-
SkyWay Auth Token を取得する
SkyWay Auth Token は SkyWay を利用するために必要な JWT 形式のトークンです。仕様に基づいて自身で作成する必要があります。詳しくは SkyWay Auth Token を参照してください。
-
Room を作成する
通話を行うグループの単位を Room と呼びます。Room を作成するには Room の作成権限を持った SkyWay Auth Token が必要です。
-
RoomMember として Room に Join する
Room に参加しているエンドユーザーを Member と呼びます。Python SDK では Room に Join することで
LocalRoomMemberを取得します。 -
Stream を Publish および Subscribe する
Member が Stream を Publish すると Room 上に Publication というリソースが生成されます。Member が Publication を Subscribe すると Subscription というリソースが生成され、Subscription の Stream にアクセスして映像・音声を受信できます。
基本的な利用例はGitHubリポジトリの examples/quickstart を参照してください。
用語解説¶
Python SDK で扱う主要な用語を説明します。
Room¶
通話を行うグループの単位であり、共通の Room に参加した Member 同士で通信を行います。
Room は一意な識別子である ID と、オプショナルな Name を持ちます。ID は Room 作成時に自動的に払い出され、Name はユーザが Room を作成する際に任意で指定できます。同一アプリケーション内で同じ Name の Room を複数作成することはできません。
Member¶
Room に参加しているエンドユーザーのことを Member と呼びます。
Python SDK では、自身の Member は LocalRoomMember として表現され、Stream の Publish・Subscribe を行うためのメソッドを提供します。他の参加者は RoomMember として参照できます。
Stream¶
Room 上で送受信できるメディアのことを Stream と呼びます。Python SDK では以下の 3 種類の Stream を利用できます。
- AudioStream
- エンドユーザーのマイク音声など
- Python SDK では 受信のみ 対応しています
- VideoStream
- エンドユーザーのカメラ映像や画面共有映像など
- Python SDK では 受信のみ 対応しています
- DataStream
- 文字列やバイナリデータなどの任意のデータ
- Python SDK では 送信のみ 対応しています
AudioStream と VideoStream は、受信時に RemoteMediaStream として扱われます。track プロパティを介して aiortc の MediaStreamTrack にアクセスできます。
DataStream は、送信時に LocalDataStream として扱われます。
Publication¶
Member が Stream を Room に公開することを Publish と呼びます。Stream を Publish すると Room 上に Stream に対応する Publication というリソースが作成されます。
Subscription¶
Member が Room 上の Publication を受信することを Subscribe と呼びます。Subscribe をすると Room 上に Subscription というリソースが作成されます。
Publication を Subscribe した Member は、Subscription を通じて Stream にアクセスし映像や音声を受信できます。
SkyWay Auth Token¶
SkyWay Auth Token は、SkyWay を利用するために必要な JWT(JSON Web Token)形式のトークンです。エンドユーザーごとに権限を細かく設定することができます。
不正な権限での操作を防ぐために、シークレットキーは機密情報として管理する必要があります。本番環境用のアプリケーションでは、エンドユーザーには SkyWay Auth Token のみを払い出し、シークレットキーはアプリケーションサーバー側で管理することを強く推奨します。
SkyWay Auth Token の詳細については、SkyWay Auth Token のドキュメントを参照してください。
基本機能¶
各機能の詳細は API リファレンスを参照してください。
SkyWayContext¶
アプリケーションの初期化と認証を行うエントリポイントです。SkyWay Auth Token を渡してセットアップします。
利用終了時には dispose() を呼んでリソースを解放します。
詳細は Context を参照してください。
Room¶
Room の作成・取得を行います。SkyWayContext から取得します。
Room の情報にはインスタンスのプロパティからアクセスでき、参加中の Member や Publication の一覧を取得できます。
詳細は Room を参照してください。
LocalRoomMember / RoomMember¶
Room に Join することで LocalRoomMember を取得できます。LocalRoomMember から Stream の Publish や Subscribe を行います。
詳細は Member を参照してください。
Publication と Subscription¶
LocalRoomMember.publish() によって DataStream を Publish し、LocalRoomMember.subscribe() によって他の Member の Publication を Subscribe します。
詳細は Publication と Subscription を参照してください。
Stream¶
送信用の LocalDataStream や、受信用の RemoteMediaStream などを扱います。RemoteMediaStream の track プロパティを通じて、受信した映像・音声データを取り出すことができます。
詳細は Stream を参照してください。
イベント¶
Room で発生するイベントは @room.on(...) デコレータで購読できます。
デコレータを使わず、room.on(...) メソッドにハンドラーを直接渡して登録することもできます。
def on_stream_published(event: StreamPublishedEvent) -> None:
...
room.on("stream_published", on_stream_published)
利用可能なイベントの一覧は Event を参照してください。