Twilio Programmable Video からの移行

V
shiguredo
Published in
12 min readFeb 5, 2024

Twilio が 2024 年 12 月 5 日で Programmable Video のサービスを終了することになりました。

今後どうするか検討している Twilio のユーザーもいるかもしれません。時雨堂でも WebRTC SFU Sora のクラウド版である Sora Cloud へのお問い合わせが増えていますので、今回は Twilio Programmable Video から Sora Cloud へ移行を検討する際に参考となる情報を記載することにしました。

この記事は Twilio から Sora Cloud への移行を推奨したり Sora Cloud の優位性をアピールしたりするものではなく、できるかぎり Twilio と Sora Cloud を単純に比較し、移行前後でどのような差分が生まれるかをイメージしやすいように記載したものです。

また今回は、Twilio Programmable Video が提供している以下の機能のうち、

  • WebRTC Go
  • Video P2P Rooms
  • Video Group Rooms

Sora と同じ WebRTC SFU であり、おそらく一番利用率の高い Video Group Rooms からの移行を検討しているユーザーに向けた情報となります。

注意点として、実際に Twilio Programmable Video で動作を確認しているわけではなく、ドキュメントを確認しつつのまとめなので、実際の仕様や挙動と異なる可能性があることをご了承ください。

Video Group Rooms

Twilio の Group Rooms 機能は 1 ルームに複数のクライアントが接続し、配信を SFU サーバーが担う仕組みです。特徴として SIP などを利用した電話との接続、録画と録画合成機能があります。

Twilio Video Group Rooms 比較表

Twilio のドキュメントに Twilio 自身の複数のサービスを比較する表があったので、それをもとに Sora Cloud との比較表を作成してみました。

|                               | Twilio Room Groups | Sora Cloud |
| ----------------------------- | ------------------ | ---------- |
| E2E encryption | No | Yes |
| Upstream BW scales with1 | Constant | Constant |
| Downstream BW scales with1 | n-1 | n-1 |
| Screensharing supported | Yes | Yes |
| Audio/Video/Data Tracks | Yes | Yes |
| Max Participants | 50 | 100+ |
| Rooms REST API | Yes | Yes |
| Ad-hoc Rooms | Yes | Yes |
| Participants API | Yes | Yes |
| Published Track API | Yes | Yes |
| Codec Preferences | Yes | Yes |
| VP8 Simulcast | Yes | Yes |
| Dominant Speaker Detection | Yes | Yes |
| Network Quality API | Yes | Yes |
| Track Subscription API | Yes | Yes |
| Recordings | Yes | Yes |
| Compositions | Yes | Yes |
| PSTN Interoperability | Yes | No |
| Track Priority API | Yes | Yes |
| Network Bandwidth Profile API | Yes | No |

Twilio が一覧に載せている機能を Sora Cloud では実現できるか、Sora Cloud のどの機能で対応しているかを書き出しています。

E2E encryption

Sora Cloud は E2E 暗号機能を提供しています。ただしブラウザのみでの提供となります。iOS や Android では利用できません。

Upstream BW scales with1 / Downstream BW scales with1

これは複数クライアントがいた場合に、それぞれのクライアントが P2P のように他のクライアント全員に配信するのではなく、SFU がクライアントに代わって配信することを意味しており、Twilio も Sora Cloud も SFU を利用しているため同じになります。

Screensharing supported

Sora Cloud ではスクリーンシェアを利用することができます。

Audio/Video/Data Tracks

Sora Cloud では音声や映像、データを利用することができます。

Max Participants

Sora Cloud ではスポットライトという機能を利用することで、アクティブではない (その場にいるが発言はしていない) 参加者の画質を下げる、もしくはアクティブではない参加者の映像や音声を配信しないようにすることができます。これによってクライアントの負荷を減らすことができ、 1 ルームに 100 人以上参加させることが可能です。

Rooms REST API

Sora Cloud は API でルームを作るという概念はありません。次の項目にある Ad-hoc Rooms がデフォルトになります。そのためルームの作成/削除といった API は提供していません。

ルームの一覧や詳細を取得する API は提供しています。

Ad-hoc Rooms

Sora Cloud は接続したタイミングでルームを作成するため、この機能がデフォルトの挙動となります。

Participants API

Sora Cloud では指定した参加者 (コネクション) を切断したり、統計情報を取得したりする仕組みを提供しています。

Published Track API

Sora Cloud では指定した参加者 (コネクション) の統計情報を取得することで、トラック一覧を取得することができます。

Codec Preferences

Sora Cloud ではクライアントが指定したコーデックを利用することができます。

VP8 Simulcast

Sora Cloud では VP8 でサイマルキャストを利用することができます。また VP8 以外に VP9 / AV1 / H.264 / H.265 も利用することができます。

Dominant Speaker Detection

Sora Cloud では先述のスポットライト機能を利用することで、アクティブな話者を Sora 側からリアルタイムに通知する機能を保有しています。

Network Quality API

Sora Cloud では回線状態を一定間隔でクライアントに通知する仕組みを提供しています。

Track Subscription API

Sora Cloud は転送フィルターという機能を利用することで、誰がどの配信者の音声や映像を視聴することができるかを API 経由などで指定できます。

Recordings

Sora Cloud は音声、映像の録音・録画機能を提供しています。合わせて、録音・録画ファイルを指定した S3 互換オブジェクトストレージにアップロードする機能や、クライアントごとに個別に出力される録音・録画ファイルを 1 つに合成する機能を提供しています。

Compositions

時雨堂では Twilio の音声、映像の合成機能と互換性がある合成ツールをオープンソースで提供しています。Sora Cloud ではその OSS を利用した合成サービスを無料で提供しています。

PSTN Interoperability

Sora Cloud では PSTN (公衆交換電話網) および SIP 音声通話 には対応していません。そのためこの仕組みが必須の場合は他社サービスを検討してください。

Track Priority API

Sora Cloud ではサイマルキャストを利用し、映像の画質を選択する機能を提供しています。

Network Bandwidth Profile API

Sora Cloud ではネットワーク帯域のプロファイル API を提供していません。そのためこの仕組みが必須の場合は他社サービスを検討してください。

この機能は将来的に Sora または Sora SDK で提供したいと考えています。

Twilio SDK が提供している機能

Twilio SDK と Sora SDK の互換性はありませんので、ここは大幅な作り直しになるかと思います。マイグレーションツールなども提供する予定はありません。

ただし、時雨堂の Discord コミュニティで Twilio からの移行が相談できるチャンネルを用意する予定です。

以下に、Twilio Programmable Video JavaScript SDK が提供している機能について、Sora JavaScript SDK で提供しているかどうかをまとめました。

Preflight API

Sora SDK では接続テストのための API を提供していません。ただ接続テスト用のルームを一時的に用意することで対応できると思います。

この機能は将来的に Sora または Sora SDK で提供したいと考えています。

RTC Diagnostics SDK

Sora SDK ではメディアデバイスやネットワーク帯域幅をチェックする仕組みを提供していません。そのため、必要な場合はご自身で開発していただく必要があります。

この機能は将来的に Sora または Sora SDK で提供したいと考えています。

JavaScript Logger

Sora JavaScript SDK では自由にログを追加することができます。

Video Processors

時雨堂では音声や映像を処理するオープンソースを提供しており、仮想背景や音声ノイズ低減、ホワイトバランス調整などが利用できます。

https://github.com/shiguredo/media-processors

JavaScript Room Monitor

時雨堂では Sora DevTools という Sora Cloud で利用できる開発者向けツールを提供しており、こちらでクライアント側の統計情報を確認することができます。

ただし、Sora DevTools は商用サービスに組み込める機能ではないため、必要な場合はご自身で開発していただく必要があります。

Sora Cloud ではブラウザ向けの JavaScript SDK 以外に iOS や Android 、Unity 、Python 、C++ 、C といった SDK を提供していますが、Twilio SDK とは互換性がないため、一から組み込んでいただく必要があります。

価格

Twilio と Sora Cloud では価格体系が大きく異なるため、注意してください。

Twilio Programmable Video の価格はすでに非公開となっているため、価格はこちらのサイトから引用しています。

https://getvoip.com/blog/twilio-pricing/ からの引用

※ 以下は 1 ドル 150 円計算です。

Twilio Video Groups (Video Group Rooms) の価格は 1 参加者 1 分 $0.004 で、1 分 0.6 円です。

また、録画は 1 参加者 1 分で $0.004 です。こちらも 1 分 0.6 円です。録画合成は合成後のファイル 1 分あたり $0.01 です。1 分 1.5 円です。

Sora Cloud の場合は接続時間での課金ではないため、直接的な比較ができません。基本料金および最大同時接続数と最大利用帯域によって料金が決まります。録画や録画ファイルのアップロード、録画合成は無料です。

基本料金は 5,000 円です。サービスを利用しない場合でも基本料金はかかります。従量料金として、最大同時 10 接続あたり月 15,000 円、最大利用帯域 100 Mbps あたり月 30,000 円です。

合計利用時間が少ない場合は、従量課金サービスの他社サービスの利用をお勧めします。

サポート価格

Twilio の場合、 Production か Business のどちらかを契約することになると思います。

  • Production が利用料の 4% または 月 250 ドルで、どちらか高い方
  • Business が利用料の 6 % または月 1500 ドルで、どちらか高い方

Sora Cloud はサービスにサポートが含まれていますので、別途サポート費用はかかりません。

ただし、Sora Cloud では Sora SDK や専用ツールの問い合わせに対するサポートを提供しておらず、Discord でのコミュニティの利用をお願いしています。そのため SDK やツールも含めて個別のサポートを希望する場合は他社サービスの利用をお勧めします。

Discord では平日営業時間内であればできるだけ反応をします。また、バグと判断した場合は最優先で対応を行います。

問い合わせ

Sora Cloud の質問や不明点がある場合は https://sora-cloud.shiguredo.jp/ からお問い合わせください。

--

--