Sora 2020.1 変更点の解説

概要

Sora 2020.1 では大きな変更が多く入っています。 ここではそれら変更点に対して一つ一つ解説をしていきます。

なぜこの変更を行ったか、なども書ける範囲で書いています。

バージョン番号の変更

バージョン番号が複雑になるのを避け、シンプルになるよう変更しました。

Sora バージョン番号表記とリリースサイクルの変更について

設定ファイルの変更

間違いを少なく、読みやすくを実現するため、設定ファイルが今までの形式から大きく変更しています。

Sora 2020.1 での設定ファイルの変更について

ログファイルの変更

分割されていた error.log と warning.log を sora.log として統一しました。

Sora 2020.1 でのログファイルの変更について

bin/sora start から bin/sora daemon へ

今まで Sora を起動するのには bin/sora start を利用していましたが、 パッケージツールの都合により bin/sora daemon に変更することになりました。

bin/sora start は 2020 年 12 月リリースの Sora にて廃止予定です。

ロールの新規追加

upstream / downstream ではマルチストリーム時にロールを的確に表現できなくなってきたため、 新しく sendrecv / sendonly / recvonly というロールを追加しました。

今までマルチストリームで upstream として使っていたのは sendrecv となります。

ロールの廃止

upstream / downstream は 2021 年 6 月にリリース予定の Sora で利用ができなくなります。 それまでに移行をします。

SDK を利用している場合は意識する必要はありませんが、 ウェブフックで通知される role が変わるため注意してください。

Ubuntu 20.04 版のパッケージ提供開始

2020 年 4 月にリリースされた Ubuntu 20.04 版へのパッケージ提供を開始しました。

最新の LTS バージョンが出たタイミングで毎回対応していきます。次の対応は 22.04 です。

Ubuntu 16.04 版のサポート/パッケージ提供終了

2021 年 4 月末で Ubuntu 16.04 版の Sora のサポートを終了します。 これは Ubuntu 16.04 の通常サポートが 2021 年 4 月で終了するためです。

現在 Ubuntu 16.04 版の Sora を利用されている方はサポートまで移行先の OS をお知らせください。

コネクション ID のフォーマット変更

今までコネクション ID は UUIDv4 を Hex 化したものを利用しておりましたが、 長過ぎるのと、見づらい事があり Crockford's Base32 を利用したものに変更しました。

PCMU の廃止

利用者がいないこと、Opus で問題がないことから廃止しました。

もともとは音声解析向けに残していましたが、 Opus に対応しているサービスが増えたこともあり、今回廃止を決定しました。

デモ機能の名前を変更

今までのファイル名では役割がわかりにくかったこともあり、新しく追加した sendrecv / sendonly / recvonly というロールに合わせました。

TURN の検証用設定追加

TURN で TCP やTLS だけを利用する仕組みを追加しました。検証時に TCP や TLS を無理やり使いたい人向けです。 ただしこの設定を有効にした場合は warning ログが出力されますので、注意してください。

AV1 と H.265 対応

新しいコーデックを検証するというのはとても大事だと考えています。 I フレーム判定もしっかり入っておりますので、本番で利用しても特に問題ありません。

ただし、録画には対応していませんので注意してください。

指定したストリームの映像を停止/再開する API の追加

特定の映像だけに視聴を集中させたいというのを API 経由で行いたいという要望があり、そちらを実装しました。 例えば 5 拠点で会議している際に、ある特定の 1 拠点のストリームだけを受け取りたい、という場合などに利用します。

サイマルキャスト画質のストリーム単位での指定

今までサイマルキャストの視聴画質はコネクション単位で固定していましたが、ストリーム単位で変更できるようになりました。

A さんのストリームは low だけど B さんのストリームは high といった画質指定が可能になりました。

録画処理の非同期化

WebRTC はリアルタイムであることを求められますが、録画ファイルについてはリアルタイムであることは求められません。 そのため「可能な限り再送パケット」を待つようにしています。

実際に配信中にみていた映像よりもキレイに録画ができることを実現しました。

録画機能のリップシンク

パケロスなどの影響で音声と映像が録画時にずれることを可能な限り避けるため、 RTCP Sender Report による音声と映像のリップシンクを実現しました。

UUIDv4 の Base32 化

今までユニークな ID には UUIDv4 の 16進表記を利用してきました。 ただ、この 16 進数表記があまりにもわかりにくく長いため、 ULID で利用されているクロックフォードの Base32 を利用するように変更しました。

Base 32

リモート統計機能

SDK 側をアップデートする必要があります。 現時点では Sora JavaScript SDK と Sora Unity SDK で対応しています。

この機能を利用することでクライアント側の統計情報を取得することができるようになりました。なにか問題が合った際の解析に利用可能です。

リモート統計情報は切断時に conneciton.log に出力されます。