サイマルキャスト機能

警告

サイマルキャスト機能は実験的機能のため正式版では仕様が変更される可能性があります

概要

サイマルキャスト (Simulcast) は配信時に一つの RTCPeerConnection から複数の画質の映像を配信する技術です。

複数のサイマルキャスト実装

現在サイマルキャストは複数の実装が存在します。このページでは ssrc-group ベースの実装の説明をしています。

rid ベースについては rid ベースのサイマルキャスト機能 をご確認ください。

ssrc-group ベースの実装

ssrc-group ベース

一つは Google が独自に実装した ssrc-group ベースのサイマルキャストです。

これは端末側で SDP を書き換える必要がある実装になっています。そのため一般的な P2P では利用されていません。ただ、ほとんどの WebRTC SFU では実装されています。

この実装が突然なくなることはありませんが、今後は後述する rid ベースの実装が利用されていきます。

rid ベースの実装

rid ベース

こちらは IETF で仕様が策定されている実装です。そのため今後はこの実装が主流になっていきます。

現時点では Chrome / Firefox / Edge Dev が対応しています。Safari は現時点では対応していません。 ただし、 Firefox の rid ベースサイマルキャストは標準的な仕様と異なるため、 Sora では対応していません。

そのため Sora の rid ベースサイマルキャストが利用できるのは Chrome または Edge Dev となります。

rid ベースの実装では SDP の書き換えは不要になります。またクライアント側でビットレートや解像度などの組み合わせを指定することが可能になります。

rid ベースのサイマルキャストついては rid ベースのサイマルキャスト機能 をご確認ください。

注意

SDK 対応状況

この機能ではクライアント側で SDP を書き換える必要があります。 そのため利用する場合はかならず SDK を利用してください。

  • JavaScript SDK

    • 対応済みです

  • iOS SDK

    • 非対応です

    • 現時点では動作確認が取れておりません

    • 対応要望は GitHub Issues へお願いします

  • Android SDK

    • 非対応です

    • 現時点では動作確認が取れておりません

    • 対応要望は GitHub Issues へお願いします

配信ブラウザの対応状況

Firefox は配信に対応していません

配信側は Chrome と Safari と Edge Dev の最新バージョンに対応しております。

視聴ブラウザの対応状況

視聴側は Chrome と Safari 、Firefox と Edge Dev の最新バージョンに対応しております。

映像コーデック

映像コーデックは Chrome と Safari と Firefox と Edge Dev の最新バージョンで VP8 と H.264 が利用可能です。

非対応機能

  • マルチストリームには対応していません

  • RTP 転送機能には対応しておりません

  • 録画機能には対応していません

  • RTP 拡張には最低限しか対応しておりません

  • RTX 機能には対応しておりません

  • ULPFEC 機能には対応しておりません

配信側の利用方法

シグナリング開始時に指定が可能です。

シグナリング開始時

シグナリングの "type": "connect" 時に "simulcast": true を指定することで、有効になります。 映像コーデックは VP8 または H264 を選択してください。

{
    "type": "connect":,
    "role": "upstream",
    "channel_id": "sora",
    "video": {"codec_type": "VP8"},
    "simulcast": true,
}

画質の種類

配信側の解像度とビットレートに依存して、サイマルキャストで配信する画質の数が変わります。

指定解像度

指定ビットレート

low

middle

high

1920x1080

4000kbps

480x270

960x540

1920x1080

1280x720

2500kbps

480x270

640x360

1280x720

960x540

900kbps

320x180

960x540

640x360

500kbps

320x180

640x360

480x270

350kbps

480x270

320x180

150kbps

320x180

上記以外を指定した場合はそのあたりに近い配信画質になると考えてください。

視聴側の利用方法

シグナリング開始時に指定が可能です。

シグナリング開始時

シグナリング "type": "connect" 時に "simulcast": true または "simulcast": {"quality": "low"} を指定することで、有効になります。 low の部分は middle または high が指定可能です。 映像コーデックは VP8 または H264 を選択してください。

{
    "type": "connect":,
    "role": "downstream",
    "channel_id": "sora",
    "video": {"codec_type": "VP8"},
    "simulcast": {"quality": "high"},
    "simulcast_rid": true
}

視聴側の画質変更 API

詳細は サイマルキャスト API をご確認ください

デモ機能

デモを用意してあります、 デモ機能 を有効にしてご使用ください。

Sora がインストールされているサーバの IP アドレスをここでは仮に 192.0.2.10 としています。

Sora にこの機能のサンプルを用意しています。また、今後は SDK からこの機能を使えるようにする予定です。

Sora を起動した後に http://192.0.2.10:5000/simulcast_pub.html へ接続してみてください。

Chrome では HTTPS が必須なのですか? も合わせて参考にしてください。

その後 http://192.0.2.10:5000/simulcast_sub.html へ接続してみてください。

後は simulcast_sub.html 側で画質を切り替えてみてください。