WebRTC Native Client Momo の sora モードを模したサンプルです。
動作環境 をご確認ください。
接続先として WebRTC SFU Sora サーバ (Sora Labo / Sora Cloud を含む) が必要です。対応 Sora もご確認ください。
以下にそれぞれのプラットフォームでのビルド方法を記載します。
ビルドに関しての問い合わせは受け付けておりません。うまくいかない場合は GitHub Actions の内容をご確認ください。
sora-cpp-sdk をクローンして、examples 以下のディレクトリを利用してください。
develop ブランチは開発ブランチであり、ビルドが失敗することがあるため、 main
またはリリースタグを指定するようにしてください。
以下は main ブランチを指定する例です。
git clone -b main https://github.com/shiguredo/sora-cpp-sdk.git
cd sora-cpp-sdk/examples
以下のツールを準備してください。
- Visual Studio 2022
- C++ をビルドするためのコンポーネントを入れてください。
- Python 3.10.5
> python3 sumomo\windows_x86_64\run.py
成功した場合、_build\windows_x86_64\release\sumomo\Release
に sumomo.exe
が作成されます。
\_BUILD\WINDOWS_X86_64\RELEASE\sumomo\RELEASE
sumomo.exe
以下のツールを準備してください。
- Python 3.12.4
python3 sumomo/macos_arm64/run.py
成功した場合、_build/macos_arm64/release/sumomo
に sumomo
が作成されます。
_build/macos_arm64/release/sumomo
└── sumomo
必要なパッケージをインストールしてください。
sudo apt install build-essential
sudo apt install libxext-dev
sudo apt install libx11-dev
sudo apt install pkg-config
sudo apt install python3
python3 sumomo/ubuntu-20.04_x86_64/run.py
成功した場合、_build/ubuntu-20.04_x86_64/release/sumomo
に sumomo
が作成されます。
_build/ubuntu-20.04_x86_64/release/sumomo/
└── sumomo
必要なパッケージをインストールしてください。
sudo apt install build-essential
sudo apt install libxext-dev
sudo apt install libx11-dev
sudo apt install pkg-config
sudo apt install python3
python3 sumomo/ubuntu-22.04_x86_64/run.py
成功した場合、以下のファイルが作成されます。_build/ubuntu-22.04_x86_64/release/sumomo
に sumomo
が作成されます。
_build/ubuntu-22.04_x86_64/release/sumomo/
└── sumomo
必要なパッケージをインストールしてください。
sudo apt install build-essential
sudo apt install libxext-dev
sudo apt install libx11-dev
sudo apt install pkg-config
sudo apt install python3
python3 sumomo/ubuntu-24.04_x86_64/run.py
成功した場合、以下のファイルが作成されます。_build/ubuntu-24.04_x86_64/release/sumomo
に sumomo
が作成されます。
_build/ubuntu-24.04_x86_64/release/sumomo/
└── sumomo
ビルドされたバイナリのあるディレクトリに移動して、コマンドラインから必要なオプションを指定して実行します。
以下は Sora サーバのシグナリング URL wss://sora.example.com/signaling
の sora
チャンネルに sendrecv
で接続する例です。
Windows の場合
> .\sumomo.exe --signaling-url wss://sora.example.com/signaling --role sendrecv --channel-id sora --multistream true --use-sdl
Windows 以外の場合
./sumomo --signaling-url wss://sora.example.com/signaling --role sendrecv --channel-id sora --multistream true --use-sdl
--signaling-url
: Sora サーバのシグナリング URL (必須)--channel-id
: channel_id (必須)--role
: role (必須)- sendrecv / sendonly / recvonly のいずれかを指定
--log-level
: 実行時にターミナルに出力するログのレベルverbose->0,info->1,warning->2,error->3,none->4
の値が指定可能です
--resolution
: 映像配信する際の解像度- 解像度は
QVGA, VGA, HD, FHD, 4K, or [WIDTH]x[HEIGHT]
の値が指定可能です - 未指定の場合は
VGA
が設定されます
- 解像度は
--hw-mjpeg-decoder
: HW MJPEG デコーダーの利用 (true/false)- 未指定の場合は false が設定されます
- NVIDIA Jetson のみで利用できます
--use-hardware-encoder
: ハードウェアエンコーダーの利用 (true/false)--openh264
: openh264 ライブラリのパスをフルパスで指定します- デコードには対応していません
設定内容については Sora のドキュメント も参考にしてください。
--client-id
: client_id--video
: 映像の利用 (true/false)- 未指定の場合は true が設定されます
--audio
: 音声の利用 (true/false)- 未指定の場合は true が設定されます
--video-codec-type
: ビデオコーデック指定- VP8 / VP9 / AV1 / H264 / H265 が指定可能ですが利用可能なコーデックはプラットフォームに依存します
- 未指定の場合は Sora のデフォルトである VP9 が利用されます
--audio-codec-type
: オーディオコーデック指定- OPUS が指定可能です
- 未指定の場合は Sora のデフォルトである OPUS が利用されます
--video-bit-rate
: ビデオビットレート指定- 0 - 30000 の値が指定可能です
- 0 は未指定と見なされます
--video-h264-params
: ビデオの H.264 設定指定--video-h265-params
: ビデオの H.265 設定指定--audio-bit-rate
: オーディオビットレート指定- 0 - 510 の値が指定可能です
- 0 は未指定と見なされます
--metadata
: メタデータ- JSON 形式の文字列を指定してください
--multistream
: マルチストリーム 機能の利用 (true/false)- 未指定の場合は Sora の設定 (デフォルト: true) が設定されます
--spotlight
: スポットライト 機能の利用 (true/false)- 未指定の場合は Sora の設定 (デフォルト: false) が設定されます
--spotlight-number
: spotlight_number- 0 - 8 の値が指定可能です
- 0 は未指定と見なされます
--simulcast
: サイマルキャスト 機能の利用 (true/false)- 未指定の場合は Sora の設定 (デフォルト: false) が設定されます
--data-channel-signaling
: DataChannel 経由のシグナリング を行います (true/false)- 未指定の場合は Sora の設定 (デフォルト: false) が設定されます
--ignore-disconnect-websocket
- 未指定の場合は Sora の設定 (デフォルト: false) が設定されます
--proxy-url
: プロキシの url--proxy-username
: プロキシ認証に使用するユーザー名--proxy-password
: プロキシ認証に使用するパスワード
--use-sdl
- SDL (Simple DirectMedia Layer) を利用して映像を表示します
--window-width
- 映像を表示するウインドウの横幅を指定します
--window-height
- 映像を表示するウインドウの縦幅を指定します
--fullscreen
- 映像を表示するウインドウをフルスクリーンにします
--show-me
- 送信している自分の映像を表示します
--insecure
: サーバー証明書の検証を行わないようにするフラグ- 未指定の場合は、サーバー証明書の検証を行います
--ca-cert
: CA 証明書ファイル--client-cert
: クライアント証明書ファイル--client-key
: クライアントプライベートキーファイル
--ca-cert
, --client-cert
, --client-key
には、PEM 形式のファイルを指定してください。
--help
- ヘルプを表示します