# サイマルキャスト機能

# 概要

サイマルキャストは複数画質の映像を同時に配信する仕組みです。

サイマルキャストの詳細については Sora の [サイマルキャスト機能](https://sora-doc.shiguredo.jp/SIMULCAST) をご確認ください。

# サイマルキャスト機能を利用する


サイマルキャスト機能を利用するには SoraMediaOption の  `enableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null)` または [enableSimulcast(rid: SoraVideoOption.SimulcastRid? = null)](enable_simulcast_rid_) を実行します。

サイマルキャストで **受信する映像の画質** を指定する場合はそれぞれの enableSimulcast の引数で `SimulcastRequestRid` または `SimulcastRid` を指定してください。

> **注釈**
>
> Sora 2025.2.0 より、シグナリング接続時に視聴するサイマルキャスト映像の指定メソッドとして enableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null) が追加されました。 これに伴い既存の enableSimulcast(rid: SoraVideoOption.SimulcastRid? = null) は非推奨になり、 2027 年 12 月リリース予定の Sora からは利用できなくなります。

# サイマルキャストが利用可能な映像コーデック

Android SDK は Sora で利用可能な全てのコーデックでサイマルキャストが利用可能です。

- VP8
- VP9
- AV1
- H264
- H265

# 送受信を指定

```kotlin
val capturer = CameraCapturerFactory.create(this)

val option = SoraMediaOption().apply {

    // 映像、音声の送受信の設定を行います

    enableVideoUpstream(capturer!!, egl.eglBaseContext)
    enableAudioUpstream()
    enableVideoDownstream()
    enableAudioDownstream()

    // サイマルキャスト機能を有効にします
    enableSimulcast()

    // 受信する画質 (rid) を指定することが可能です
    // role が sendrecv/recvonly の場合に有効です
    // Sora 2025.2.x 以降を利用する場合は requestRid: SimulcastRequestRid を指定します
    // enableSimulcast(requestRid = SoraVideoOption.SimulcastRequestRid.R0)
    //
    // Sora 2025.1.x 以前を利用する場合は rid: SimulcastRid のみが指定可能です
    // enableSimulcast(rid = SoraVideoOption.SimulcastRid.R0)

    // 映像コーデックを指定します
    videoCodec = SoraVideoOption.Codec.VP8

    // 3 段階の画質に対応するためにビットレートを高めに指定します
    videoBitrate = 5000

}

// Sora との接続後、カメラ起動時に解像度とフレームレートを指定します
// 3 段階の画質に対応するためにカメラの解像度を高めに指定します
capturer?.startCapture(1920, 1080, 30)
```

# 送信のみを指定

```kotlin
val capturer = CameraCapturerFactory.create(this)

val option = SoraMediaOption().apply {

    // 映像、音声の送受信の設定を行います

    enableVideoUpstream(capturer!!, egl.eglBaseContext)
    enableAudioUpstream()

    // サイマルキャスト機能を有効にします
    enableSimulcast()

    // 配信する映像コーデックを指定します
    videoCodec = SoraVideoOption.Codec.VP8

    // 3 段階の画質に対応するためにビットレートを高めに指定します
    videoBitrate = 5000

}

// Sora との接続後、カメラ起動時に解像度とフレームレートを指定します
// 3 段階の画質に対応するためにカメラの解像度を高めに指定します
capturer?.startCapture(1920, 1080, 30)
```

