sora_sdk モジュール¶
- sora_sdk
概要¶
sora_sdk ライブラリは Sora C++ SDK をラップしたライブラリです。 Sora のシグナリングなどを意識する必要はありません。
音声と映像の扱い¶
Sora Python SDK では音声や映像をデバイスから取得したり、画面に描画する機能を提供していません。 その部分は OpenCV や sounddevice などのライブラリを別途利用する必要があります。
NDArray 型と LikeArray 型の注意¶
Sora Python SDK では音声や映像のデータを取り扱う際に NumPy の NDArray 型を利用します。
ただし nanobind の制約により、
pyi では NDArray 型が ArrayLike 型になっています。
参考¶
libwebrtc ログ指定¶
libwebrtc のログ出力を指定できます。
- enable_libwebrtc_log
以下のように Sora クライアントを生成する前に libwebrtc のログレベルを指定してください。
import sora_sdk if __name__ == '__main__': sora_sdk.enable_libwebrtc_log(sora_sdk.SoraLoggingSeverity.VERBOSE)
利用できるコーデック一覧の取得¶
SoraVideoCodecCapability オブジェクト¶
- SoraVideoCodecCapability
- to_json()
JSON 形式の文字列を返します。
- engines
- Codec
- Engine
- Parameters
Sora オブジェクト¶
- Sora(video_codec_preference: SoraVideoCodecPreference | None = None, openh264: str | None = None)
Sora SDK の主要なクラスです。このクラスを使用して Sora への接続や、音声と映像のソースを作成します。
- param video_codec_preference:
SoraVideoCodecPreference を指定します。何も指定しない場合は None で全てのコーデックは SoraVideoCodecImplementation.INTERNAL を利用します。
- type:
SoraVideoCodecPreference | None
- param openh264:
OpenH264 のパスを指定します。
- type:
str | None
- create_audio_source(channels, sample_rate)
Sora に音声を送るための SoraAudioSource を作成します。
- py:
class:SoraAudioSource は送信する際に、ここで指定したチャネル数とサンプリングレートに入力されたデータを変換した上で送信します。
- create_video_source()
Sora に映像を送るための SoraVideoSource を作成します。
- create_connection(signaling_urls, role, channel_id, \)
client_id=None, bundle_id=None, metadata=None, \ signaling_notify_metadata=None, audio_source=None, video_source=None \ audio=True, video=True, audio_codec_type=None, video_codec_type=None, \ audio_bit_rate=None, video_bit_rate=None, video_vp9_params=None, \ video_av1_params=None, video_h264_params=None, simulcast=None, \ spotlight=None, spotlight_number=None, simulcast_rid=None, simulcast_request_rid=None, \ spotlight_focus_rid=None, spotlight_unfocus_rid=None, \ forwarding_filter=None, forwarding_filters=None, data_channels=None, \ data_channel_signaling=None, ignore_disconnect_websocket=None, \ data_channel_signaling_timeout=None, disconnect_wait_timeout=None, \ websocket_close_timeout=None, websocket_connection_timeout=None, \ audio_streaming_language_code=None, insecure=None, \ client_cert=None, client_key=None, proxy_url=None, \ proxy_username=None, proxy_password=None, proxy_agent=None)
- param List[str] signaling_urls:
シグナリング URLのリスト
- param str role:
ロール
- param str channel_id:
チャネル ID
- param Optional[str] client_id:
クライアント ID
- param Optional[str] bundle_id:
バンドル ID
- param Optional[object] metadata:
認証メタデータ
- param Optional[object] signaling_notify_metadata:
シグナリング通知メタデータ
- param Optional[sora_sdk.SoraTrackInterface] audio_source:
音声ソース
- param Optional[sora_sdk.SoraTrackInterface] video_source:
映像ソース
- param Optional[sora_sdk.SoraAudioFrameTransformer] audio_frame_transformer:
音声フレーム変換器
- param Optional[sora_sdk.SoraVideoFrameTransformer] video_frame_transformer:
映像フレーム変換器
- param Optional[bool] audio:
音声
- param Optional[bool] video:
映像
- param Optional[str] audio_codec_type:
音声コーデックタイプ
- param Optional[str] video_codec_type:
映像コーデックタイプ
- param Optional[int] audio_bit_rate:
音声ビットレート
- param Optional[int] video_bit_rate:
映像ビットレート
- param Optional[object] audio_opus_params:
音声 Opus 設定指定
- param Optional[object] video_vp9_params:
映像 VP9 設定指定
- param Optional[object] video_av1_params:
映像 AV1 設定指定
- param Optional[object] video_h264_params:
映像 H.264 設定指定
- param Optional[object] video_h265_params:
映像 H.265 設定指定
- param Optional[bool] simulcast:
サイマルキャスト
- param Optional[bool] spotlight:
スポットライト
- param Optional[int] spotlight_number:
スポットライトナンバー
- param Optional[str] simulcast_rid:
サイマルキャスト RID
- param Optional[str] simulcast_request_rid:
サイマルキャスト RID リクエスト
- param Optional[str] spotlight_focus_rid:
スポットライトフォーカス RID
- param Optional[str] spotlight_unfocus_rid:
スポットライトアンフォーカス RID
- param Optional[object] forwarding_filter:
転送フィルター
- param Optional[list[object]] forwarding_filters:
転送フィルターのリスト
- param Optional[object] data_channels:
データチャネル
- param Optional[bool] data_channel_signaling:
データチャネルシグナリング
- param Optional[bool] ignore_disconnect_websocket:
ウェブソケット切断無視
- param Optional[int] data_channel_signaling_timeout:
データチャネルシグナリングタイムアウト
- param Optional[int] disconnect_wait_timeout:
切断待ちタイムアウト
- param Optional[int] websocket_close_timeout:
ウェブソケットクローズタイムアウト
- param Optional[int] websocket_connection_timeout:
ウェブソケット接続タイムアウト
- param Optional[str] audio_streaming_language_code:
音声ストリーミング言語コード
- param Optional[bool] insecure:
サーバー証明書のチェックを無視する
- param Optional[bytes] client_cert:
クライアント証明書
- param Optional[bytes] client_key:
クライアント証明書シークレットキー
- param Optional[bytes] ca_cert:
サーバー証明書のチェックを行う CA 証明書
- param Optional[str] proxy_url:
Proxy URL
- param Optional[str] proxy_username:
Proxy ユーザ名
- param Optional[str] proxy_password:
Proxy パスワード
- param Optional[str] proxy_agent:
Proxy エージェント
- param Optional[SoraDegradationPreference] degradation_preference:
デグラデーション優先度
- rtype:
sora_sdk.SoraConnection
Sora と接続するための SoraConnection を作成します。
接続して切断する最小コード¶
ただ繫いで、切断するだけのコードです。
import time
from sora_sdk import Sora
if __name__ == "__main__":
# Sora インスタンスを生成
sora = Sora()
# Sora に接続する
conn = sora.create_connection(
signaling_urls=["wss://example.com/signaling"],
role="sendonly",
channel_id="sora",
)
conn.connect()
# 接続するまで待つ
time.sleep(3)
# connect() を呼んだら disconnect を呼ぶ
conn.disconnect()
mTLS を利用する際の最小コード¶
mTLS を利用する際の証明書は open('cert.pem', 'rb').read() のように読み込んだバイナリを渡してください。
import time
from sora_sdk import Sora
if __name__ == "__main__":
# Sora インスタンスを生成
sora = Sora()
# Sora に接続する
conn = sora.create_connection(
signaling_urls=["wss://example.com/signaling"],
role="sendonly",
channel_id="sora",
# クライアント証明書を読み込む
client_cert=open("cert.pem", "rb").read(),
# クライアント証明書シークレットキーを読み込む
client_key=open("cert-key.pem", "rb").read(),
# CA 証明書を読み込む
ca_cert=open("ca.pem", "rb").read(),
)
conn.connect()
# 接続するまで待つ
time.sleep(3)
# Sora から切断する
conn.disconnect()
metadata にアクセストークンを指定する最小コード¶
Sora Cloud や Sora Labo を利用する際に metadata にアクセストークンを指定してください。
import time
from sora_sdk import Sora
if __name__ == "__main__":
# Sora インスタンスを生成
sora = Sora()
# Sora に接続する
conn = sora.create_connection(
signaling_urls=["wss://example.com/signaling"],
role="sendonly",
channel_id="sora",
# dict をそのまま指定してください
metadata={"access_token": "access_token"},
)
conn.connect()
# 接続するまで待つ
time.sleep(3)
# Sora から切断する
conn.disconnect()
video_codec_preference を指定する最小コード¶
映像コーデックのエンコード/デコードを細かく指定する場合は Sora.video_codec_preference を指定してください。
import time
from sora_sdk import (
Sora,
SoraVideoCodecImplementation,
SoraVideoCodecPreference,
SoraVideoCodecType,
)
if __name__ == "__main__":
# Sora インスタンスを生成
sora = Sora(
# ビデオコーデックプリファレンスを指定する
video_codec_preference=SoraVideoCodecPreference(
codecs=[
# H.264 のみを利用する
SoraVideoCodecPreference.Codec(
type=SoraVideoCodecType.H264,
# H.264 のエンコーダーに OpenH264 を指定する
encoder=SoraVideoCodecImplementation.CISCO_OPENH264,
# sendonly なのでデコーダーは指定しない
),
],
),
openh264="/path/to/libopenh264-2.6.0-linux64.7.so",
)
# Sora に接続する
conn = sora.create_connection(
signaling_urls=["wss://example.com/signaling"],
role="sendonly",
channel_id="sora",
)
conn.connect()
# 接続するまで待つ
time.sleep(3)
# Sora から切断する
conn.disconnect()
SoraConnection オブジェクト¶
- SoraConnection
Sora との接続を制御する機能を提供します。
- py:
meth:Sora.create_connection から生成します。
- connect()
Sora に接続します。
- disconnect()
Sora から切断します。
- get_stats()
クライアントの WebRTC 統計情報を取得します。 形式は Identifiers for WebRTC's Statistics API に準拠しています。
import json import time from sora_sdk import Sora if __name__ == "__main__": sora = Sora() conn = sora.create_connection( signaling_urls=["wss://sora.example.com/signaling"], role="sendrecv", channel_id="sora", ) conn.connect() # 接続確立まで少し待つ time.sleep(5) # 取得する統計情報は文字列 raw_stats = conn.get_stats() # 文字列から JSON オブジェクトにする stats = json.loads(raw_stats) print(stats) conn.disconnect()- on_disconnect(error_code, message)
コネクション切断時のコールバックです。 SoraSignalingErrorCode で表されるエラーコードとメッセージを引数に取ります。
import time from sora_sdk import Sora, SoraSignalingErrorCode def on_disconnect(error_code: SoraSignalingErrorCode, message: str): print(f"error_code: {error_code}, message: {message}") if __name__ == "__main__": sora = Sora() conn = sora.create_connection( signaling_urls=["wss://sora.example.com/signaling"], role="sendrecv", channel_id="sora", ) # 切断コールバックを登録する conn.on_disconnect = on_disconnect conn.connect() time.sleep(5) # connect() を呼んだら disconnect を呼ぶ conn.disconnect()- send_data_channel(label, data)
Sora にデータチャンネルを介してデータを送信します。
- on_data_channel(label)
データチャネルが追加された際に呼び出されるコールバックです。 追加されたデータチャネルのラベルを引数に取ります。
- on_message(label, data)
データチャネルでメッセージ通知を受信した際に呼び出されるコールバックです。 受信したデータチャネルのラベルとデータを引数に取ります。
import time from sora_sdk import Sora, SoraConnection # データチャネルが利用可能になったら呼ばれる def on_data_channel(label: str): print(f"label: {label}") # データチャネルのメッセージを受信すると呼ばれる def on_message(label: str, data: bytes): print(f"label: {label}, data: {data.decode()}") if __name__ == "__main__": sora: Sora = Sora() conn: SoraConnection = sora.create_connection( signaling_urls=["wss://sora.example.com/signaling"], role="sendrecv", channel_id="sora", data_channel_signaling=True, data_channels=[{"label": "#spam", "direction": "recvonly"}], ) # データチャネルコールバックを登録する conn.on_data_channel = on_data_channel # データチャネルメッセージコールバックを登録する conn.on_message = on_message conn.connect() time.sleep(5) # connect() を呼んだら disconnect を呼ぶ conn.disconnect()- on_notify(message)
シグナリング通知を受信した際に呼び出されるコールバックです。 受信したメッセージを引数に取ります。
import json import time from typing import Any from sora_sdk import Sora def on_notify(raw_message: str): # JSON デコード message: dict[str, Any] = json.loads(raw_message) if message["type"] == "connection.created": print(f"connection.created: {message}") if __name__ == "__main__": sora = Sora() conn = sora.create_connection( signaling_urls=["wss://sora.example.com/signaling"], role="sendrecv", channel_id="sora", ) # シグナリング通知コールバックを登録する conn.on_notify = on_notify conn.connect() time.sleep(5) # connect() を呼んだら disconnect を呼ぶ conn.disconnect()- on_push(message)
シグナリングプッシュを受信した際に呼び出されるコールバックです。 受信したメッセージを引数に取ります。
- on_set_offer
Sora から受け取った Offer を設定した際に呼び出されるコールバックです。 受信した Offer を引数に取ります。
- on_track(track)
Track が追加された際に呼び出されるコールバックです。追加された Track の SoraMediaTrack を引数に取ります。
コールバックで受け取った後に SoraTrackInterface.kind から video か audio かを判別し、適切な Sink に渡すことで受信した映像、音声データを受け取ることができます。
- on_switched(message)
シグナリングが DataChannel に切り替わったタイミングで呼ばれるコールバックです。受信したメッセージを引数に取ります。 主にログ出力などに利用する事を想定しており、戻り値を返すことはできません。
- on_signaling_message(type, direction, message)
シグナリングメッセージを送受信した際に呼ばれるコールバックです。 主にログ出力などに利用する事を想定しており、戻り値を返すことはできません。
- "type": "connect"
- "type": "redirect"
- "type": "offer"
- "type": "answer"
- "type": "candidate"
- "type": "re-offer"
- "type": "re-answer"
- "type": "disconnect"
- "type": "close"
"type": "close"は Sora 2024.2.0 から利用可能なメッセージです。"type": "switched"は SoraConnection.on_switched を利用してください。"type": "ping"と"type": "pong"は取得できません。
import json import time from sora_sdk import Sora, SoraSignalingDirection, SoraSignalingType def on_signaling_message( type: SoraSignalingType, direction: SoraSignalingDirection, raw_message: str ): json_message = json.loads(raw_message) print(f"type: {type.value}, direction: {direction.value}, message: {json_message}") if __name__ == "__main__": sora = Sora() conn = sora.create_connection( signaling_urls=["wss://sora.example.com/signaling"], role="sendrecv", channel_id="sora", ) # シグナリングコールバックを登録する conn.on_signaling_message = on_signaling_message conn.connect() time.sleep(5) # connect() を呼んだら disconnect を呼ぶ conn.disconnect()- on_ws_close(code, reason)
WebSocket 切断時のコールバックです。 SDK 側で閉じた場合は reason には
"SELF-CLOSED"が入ります。 主にログ出力などに利用する事を想定しており、戻り値を返すことはできません。
import time from sora_sdk import Sora def on_ws_close(code: int, reason: str): print(f"WebSocket closed: code={code}, reason={reason}") if __name__ == "__main__": sora = Sora() conn = sora.create_connection( signaling_urls=["wss://sora.example.com/signaling"], role="sendrecv", channel_id="sora", ) # WebSocket クローズコールバックを登録する conn.on_ws_close = on_ws_close conn.connect() time.sleep(5) # connect() を呼んだら disconnect を呼ぶ conn.disconnect()
SoraAudioSource オブジェクト¶
- SoraAudioSource
Sora に Python で生成した音声データを送る機能を提供します。このクラスは SoraTrackInterface を継承しています。
- py:
meth:Sora.create_audio_source から生成します。
- on_data(ndarray)
Sora に送る音声データを渡します。
タイムスタンプが引数にないオーバーロードです。タイムスタンプは先に受け取ったデータと連続になっていると想定してサンプル数から自動生成します。
- on_data(data, samples_per_channel)
Sora に送る音声データを渡します。
タイムスタンプが引数にないオーバーロードです。タイムスタンプは先に受け取ったデータと連続になっていると想定してサンプル数から自動生成します。
SoraAudioSink オブジェクト¶
- SoraAudioSink(track, output_frequency=-1, output_channels=0)
AudioTrack から音声データを取り出す機能を提供します。
受け取った音声はコンストラクタで設定したサンプリングレートとチャンネル数に変換し、内部のバッファに溜め込まれるため、任意のタイミングで音声を取り出すことができます。
- read(frames=0, timeout=1)
受信済みのデータをバッファから読み出します。
- on_data
音声データを AudioTrack から受け取った際に呼び出されるコールバックです。音声データが格納された ndarray で チャンネルごとのサンプル数 x チャンネル数 になっている音声データを引数にとります。
このコールバック関数内では重い処理は行わないでください。
このコールバックは廃止予定です。
- on_format(sample_rate, number_of_channels)
AudioTrack から受け取った音声データのサンプリングレートもしくはチャンネル数が変化した場合に呼び出されるコールバックです。新しいサンプリングレートとチャンネル数を引数にとります。
このコールバック関数内では重い処理は行わないでください。
このコールバックは廃止予定です。
from sora_sdk import SoraAudioSink
audio_sink = None
def on_track(track):
# 音声トラックの場合
if track.kind == "audio":
# 音声トラックのため込み場所を指定
_audio_sink = SoraAudioSink(
track=track,
# 音声出力デバイスが利用可能な値を指定してください
output_frequency=16000,
# 音声出力デバイスが利用可能な値を指定してください
output_channels=1,
)
音声を取り出す場合は SoraAudioSink.read() を利用してください。
# frames はバッファサイズです
success, data = audio_sink.read(frames)
if success:
else:
SoraVideoSource オブジェクト¶
- SoraVideoSource
Sora に Python で生成した映像のフレームデータを送る機能を提供します。このクラスは SoraTrackInterface を継承しています。
- py:
meth:Sora.create_video_source から生成します。
- on_captured(ndarray)
この関数が呼び出された時点のタイムスタンプでフレームを送信します。
映像になるように一定のタイミングで呼び出さない場合、受信側でコマ送りになります。
SoraTrackInterface オブジェクト¶
- SoraTrackInterface
AudioTrack もしくは VideoTrack を表すために使用されます。
- py:
attr:SoraConnection.on_track コールバックで引数として渡されます。
- set_enabled(enable)
トラックの有効/無効を設定します。
- enabled
トラックが有効かどうかを示すブール値。
- id
トラックの ID を示す文字列。
- kind
トラックの種類を示す文字列。 video もしくは audio が入っています。 AudioTrack か VideoTrack かを判別することができます。
- state
トラックの状態。
SoraAudioFrame オブジェクト¶
- SoraAudioFrame
libwebrtc 内の音声処理単位である 10ms の音声データが格納されています。 picklable です。
- data()
- samples_per_channel
チャンネルあたりのサンプル数。
- num_channels
チャンネル数 (モノラルの場合は 1、ステレオの場合は 2)。
- sample_rate_hz
サンプリングレート。
- absolute_capture_timestamp_ms
キャプチャした際のタイムスタンプ。ない場合は None。
SoraAudioStreamSink オブジェクト¶
- SoraAudioStreamSink(track, output_frequency=-1, output_channels=0)
AudioTrack の音声データを受け取って 逐次 Python に渡す on_frame コールバックを提供します。
出力には on_frame にコールバック関数を指定する必要があります。
- on_frame
音声データを AudioTrack から受け取った際に呼び出されるコールバック。音声データが格納された SoraAudioFrame オブジェクトを引数に取ります。
from sora_sdk import SoraAudioStreamSink
audio_stream_sink = None
def on_frame(frame):
pass
def on_track(track):
# 音声トラックの場合
if track.kind == "audio":
# トラックの音声データの受け口として SoraAudioStreamSink を生成
audio_stream_sink = SoraAudioStreamSink(
track=track,
# 24kHz にリサンプリングするように指定
output_frequency=24000,
# モノラルにミキシングするように指定
output_channels=1,
)
# 音声データが来た際のコールバックを指定
audio_stream_sink.on_frame = on_frame
SoraMediaTrack オブジェクト¶
- py:
attr:SoraConnection.on_track コールバックで引数として渡されます。
- SoraMediaTrack
Sora から受け取った AudioTrack もしくは VideoTrack を扱うために提供されます。このクラスは SoraTrackInterface を継承しています。
- stream_id
この Track の Stream ID を返します。
- set_frame_transformer(transformer)
フレームを変換する SoraFrameTransformer オブジェクトを設定します。
SoraVAD オブジェクト¶
- SoraVAD
- analyze(frame)
frame 内の音声データが 24 kHz 以外の時は 24 kHz にリサンプリングを、2 チャンネル以上の時は 1 チャンネルにミキシングをそれぞれ変換した上で VAD を行います。VAD しか使わない場合は SoraAudioStreamSink で事前に変換しておくことをお勧めします。
SoraAudioStreamSink と組み合わせて以下のように使います。
from sora_sdk import SoraAudioStreamSink, SoraVAD
audio_stream_sink = None
vad = SoraVAD()
def on_frame(frame):
# frame が音声である確率を求める
voice_probability = vad.analyze(frame)
if voice_probability > 0.95: # 0.95 は libwebrtc の判定値
print(f"Voice! voice_probability={voice_probability}")
else:
print("Not a voice!")
def on_track(track):
if track.kind == "audio":
audio_stream_sink = SoraAudioStreamSink(
track=track,
# VAD はサンプリングレートが 24 kHz 以外の時 24kHz にリサンプリングするので、 24kHz にしておく。
output_frequency=24000,
# VAD はチャネル数が 2 以上の時 1 チャンネルにミキシングするので、 1 チャンネルにしておく。
output_channels=1,
)
audio_stream_sink.on_frame = on_frame
SoraVideoFrame オブジェクト¶
- SoraVideoFrame
- data()
OpenCV の cv2.imshow にそのまま渡すと表示されるように成型されています。
SoraVideoSink オブジェクト¶
- SoraVideoSink(track)
VideoTrack からフレームデータを受け取って、 逐次 Python に渡す on_frame コールバックを提供します。
出力には on_frame にコールバック関数を指定する必要があります。
- on_frame
フレームデータを VideoTrack から受け取った際に呼び出されるコールバックです。フレームデータが格納された SoraVideoFrame オブジェクトを引数に取ります。
このコールバック関数内では重い処理は行わないでください。 サンプルを参考に queue を利用するなどの対応を推奨します。
この関数はメインスレッドから呼び出されないため、関数内で OpenCV の cv2.imshow を実行しても macOS の場合は表示されません。
from sora_sdk import SoraVideoSink
video_sink = None
def on_frame(frame):
pass
def on_track(track):
# 映像トラックの場合
if track.kind == "video":
# 映像トラックのため込み場所を指定
video_sink = SoraVideoSink(track=track)
# 映像フレームコールバックを指定
video_sink.on_frame = on_frame
OpenCV¶
Sora Python SDK サンプルでは OpenCV を利用して映像を出力しています。
SoraVideoCodecType オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraVideoCodecType
映像コーデックの種類を表す列挙型です。
- VP8
VP8 コーデック
- VP9
VP9 コーデック
- AV1
AV1 コーデック
- H264
H.264 コーデック
- H265
H.265 コーデック
SoraVideoCodecPreference オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraVideoCodecPreference(codecs: Sequence[SoraVideoCodecPreference.Codec] = [])
映像コーデックのエンコード/デコードを細かく指定するためのオブジェクトです。 未指定の場合は全てのコーデックで SoraVideoCodecImplementation.INTERNAL を利用します。
- Codec(type, encoder=None, decoder=None)
コーデックの種類とエンコード/デコードに利用する実装を指定します。 encoder や decoder を指定しない場合は None が指定され、利用できなくなります。
from sora_sdk import (
Sora,
SoraVideoCodecImplementation,
SoraVideoCodecPreference,
SoraVideoCodecType,
)
Sora(
# ビデオコーデックプリファレンスを指定する
video_codec_preference=SoraVideoCodecPreference(
codecs=[
# VP9 は libwebrtc 組込のソフトウェアコーデック libvpx を利用する
SoraVideoCodecPreference.Codec(
type=SoraVideoCodecType.VP9,
encoder=SoraVideoCodecImplementation.INTERNAL,
decoder=SoraVideoCodecImplementation.INTERNAL,
),
# AV1 は NVIDIA Video Codec を利用する
SoraVideoCodecPreference.Codec(
type=SoraVideoCodecType.AV1,
encoder=SoraVideoCodecImplementation.NVIDIA_VIDEO_CODEC_SDK,
decoder=SoraVideoCodecImplementation.NVIDIA_VIDEO_CODEC_SDK,
),
# H.264 は Cisco OpenH264 を利用する
SoraVideoCodecPreference.Codec(
type=SoraVideoCodecType.H264,
encoder=SoraVideoCodecImplementation.CISCO_OPENH264,
decoder=SoraVideoCodecImplementation.CISCO_OPENH264,
),
# H.265 は Intel VPL を利用する
SoraVideoCodecPreference.Codec(
type=SoraVideoCodecType.H265,
encoder=SoraVideoCodecImplementation.INTEL_VPL,
decoder=SoraVideoCodecImplementation.INTEL_VPL,
),
]
),
openh264="/path/to/libopenh264-2.5.0-linux64.7.so",
)
SoraVideoCodecImplementation オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraVideoCodecImplementation
映像コーデックの実装を表す列挙型です。
- INTERNAL
INTERNAL は Sora Python SDK がベースにしている
libwebrtcに含まれるデコーダーやエンコーダーを利用します。 端末のハードウェアアクセラレーターが利用できる場合、自動的に利用します。macOS で
INTERNALを指定し、コーデックに H.264 や H.265 を指定した場合は Apple Video Toolbox を利用します。
- CISCO_OPENH264
Cisco OpenH264 を利用します。OpenH264 を利用する場合は
openh264に OpenH264 のパスを指定してください。
- INTEL_VPL
Intel VPL によるハードウェアアクセラレーターを利用します。 利用できるコーデックは AV1 / H.264 / H.265 です。
- NVIDIA_VIDEO_CODEC_SDK
NVIDIA Video Codec によるハードウェアアクセラレーターを利用します。 利用できるコーデックは VP9 / H.264 / H.265 です。
SoraTransformableFrame オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraTransformableFrame
- direction
- mime_type
- payload_type
- ssrc
- rtp_timestamp
SoraTransformableAudioFrame オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraTransformableAudioFrame
- get_data()
映像データを取得します。
- set_data(data)
映像データを設定します。
- absolute_capture_timestamp
Abs-Capture-Time RTP 拡張の値が含まれます。
- audio_level
Audio-Level RTP 拡張の値が含まれます。
- contributing_sources
RTP CSRC のリストが含まれます。
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber
- receive_time
- sequence_number
RTP シーケンス番号が含まれます。受信する音声パケットにのみ含まれます。
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber
- type
- direction
- mine_type
音声の MIME タイプが含まれます。多くの場合 audio/opus です。
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-mimetype
- payload_type
RTP ペイロードタイプが含まれます。
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-payloadtype
- ssrc
RTP SSRC が含まれます。
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber
- rtp_timestamp
RTP タイムスタンプが含まれます。
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-rtptimestamp
SoraTransformableVideoFrame オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraTransformableVideoFrame
- get_data()
映像データを取得します。
- set_data(data)
映像データを設定します。
- contributing_sources
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-contributingsources
- frame_dependencies
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies
- is_key_frame
キーフレームかどうかが含まれます。
- spatial_index
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex
- temporal_index
https://www.w3.org/TR/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex
- direction
SoraFrameTransformer オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraFrameTransformer
- on_transform
- enqueue(frame)
- start_short_circuiting()
SoraAudioFrameTransformer オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraAudioFrameTransformer
- on_transform
- enqueue(frame)
- start_short_circuiting()
SoraVideoFrameTransformer オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraVideoFrameTransformer
- on_transform
- enqueue(frame)
- start_short_circuiting()
SoraSignalingType オブジェクト¶
- SoraSignalingType
- WEBSOCKET
WebSocket を利用することを示す定数です。
- DATACHANNEL
DataChannel を利用することを示す定数です。
SoraDegradationPreference オブジェクト¶
バージョン 2025.1.0 で追加。
- SoraDegradationPreference
- MAINTAIN_FRAMERATE
フレームレートを優先することを示す定数です。
- MAINTAIN_RESOLUTION
解像度を優先することを示す定数です。
- BALANCED
フレームレートと解像度のバランスを優先することを示す定数です。
- DISABLED
デグラデーションを無効化することを示す定数です。
SoraSignalingDirection オブジェクト¶
- SoraSignalingDirection
- SENT
送信したメッセージを示す定数です。
- RECEIVED
受信したメッセージを示す定数です。
SoraSignalingErrorCode オブジェクト¶
- SoraSignalingErrorCode
- CLOSE_FAILED
接続のクローズに失敗したことを示すエラーコードです。
- CLOSE_SUCCEEDED
接続のクローズが成功したことを示すエラーコードです。
- ICE_FAILED
ICE の処理に失敗したことを示すエラーコードです。
- INTERNAL_ERROR
内部エラーが発生したことを示すエラーコードです。
- INVALID_PARAMETER
無効なパラメータが指定されたことを示すエラーコードです。
- PEER_CONNECTION_STATE_FAILED
ピア接続の状態が異常なことを示すエラーコードです。
- WEBSOCKET_HANDSHAKE_FAILED
WebSocket のハンドシェイクに失敗したことを示すエラーコードです。
- WEBSOCKET_ONCLOSE
WebSocket の接続が閉じられたことを示すエラーコードです。
- WEBSOCKET_ONERROR
WebSocket でエラーが発生したことを示すエラーコードです。
SoraLoggingSeverity オブジェクト¶
- SoraLoggingSeverity
- VERBOSE
最も詳細なログレベルを示す定数です。
- INFO
情報レベルのログを示す定数です。
- WARNING
警告レベルのログを示す定数です。
- ERROR
エラーレベルのログを示す定数です。
- NONE
ログ出力を無効化するための定数です。