Skip to content

Latest commit

 

History

History
271 lines (194 loc) · 9.91 KB

README.md

File metadata and controls

271 lines (194 loc) · 9.91 KB

Sumomo を使ってみる

概要

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

Sumomo をビルドする

Windows x86_64 向けのビルドをする

事前準備

以下のツールを準備してください。

  • Visual Studio 2022
    • C++ をビルドするためのコンポーネントを入れてください。
  • Python 3.10.5
ビルド
> python3 sumomo\windows_x86_64\run.py

成功した場合、_build\windows_x86_64\release\sumomo\Releasesumomo.exe が作成されます。

\_BUILD\WINDOWS_X86_64\RELEASE\sumomo\RELEASE
    sumomo.exe

macOS arm64 向けのビルドをする

事前準備

以下のツールを準備してください。

  • Python 3.12.4
ビルド
python3 sumomo/macos_arm64/run.py

成功した場合、_build/macos_arm64/release/sumomosumomo が作成されます。

_build/macos_arm64/release/sumomo
└── sumomo

Ubuntu 20.04 x86_64 向けのビルドをする

事前準備

必要なパッケージをインストールしてください。

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/sumomosumomo が作成されます。

_build/ubuntu-20.04_x86_64/release/sumomo/
└── sumomo

Ubuntu 22.04 x86_64 向けのビルドをする

事前準備

必要なパッケージをインストールしてください。

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/sumomosumomo が作成されます。

_build/ubuntu-22.04_x86_64/release/sumomo/
└── sumomo

Ubuntu 24.04 x86_64 向けのビルドをする

事前準備

必要なパッケージをインストールしてください。

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/sumomosumomo が作成されます。

_build/ubuntu-24.04_x86_64/release/sumomo/
└── sumomo

実行する

コマンドラインから必要なオプションを指定して実行します

ビルドされたバイナリのあるディレクトリに移動して、コマンドラインから必要なオプションを指定して実行します。 以下は Sora サーバのシグナリング URL wss://sora.example.com/signalingsora チャンネルに 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 のいずれかを指定

Sumomo 実行に関するオプション

  • --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 に関するオプション

設定内容については 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 に関するオプション

  • --proxy-url : プロキシの url
  • --proxy-username : プロキシ認証に使用するユーザー名
  • --proxy-password : プロキシ認証に使用するパスワード

SDL に関するオプション

  • --use-sdl
  • --window-width
    • 映像を表示するウインドウの横幅を指定します
  • --window-height
    • 映像を表示するウインドウの縦幅を指定します
  • --fullscreen
    • 映像を表示するウインドウをフルスクリーンにします
  • --show-me
    • 送信している自分の映像を表示します

証明書に関するオプション

  • --insecure : サーバー証明書の検証を行わないようにするフラグ
    • 未指定の場合は、サーバー証明書の検証を行います
  • --ca-cert : CA 証明書ファイル
  • --client-cert : クライアント証明書ファイル
  • --client-key : クライアントプライベートキーファイル

--ca-cert, --client-cert, --client-key には、PEM 形式のファイルを指定してください。

その他のオプション

  • --help
    • ヘルプを表示します