時雨堂の WebRTC SFU Sora は 8月末に 3.0 をリリース予定している。
多くの機能追加、性能向上、安定化などなど盛りだくさんだここでは何回かに分けて、機能を紹介していきたい。
WebM-DASH ライブストリーミング機能
WebRTC はリアルタイムな通信を実現してくれる代わりに、配信できるユーザ数が限られる。更にあくまで、リアルタイムであり追っかけ再生などの仕組みはない。
WebRTC SFU Sora では WebRTC での配信以外に MPEG-DASH での配信機能を追加した。実際は MPEG-DASH 規格の仕様の一つである WebM-DASH に対応している。
MPEG-DASH は HTTP ベースのストリーミング規格の一つだ。Apple の HLS と同じようなイメージをしてもらえれば良い。
Sora では WebRTC でリアルタイムな配信をしつつ、MPEG-DASH 形式での配信も可能な仕組みを提供する。このことにより一部のユーザには WebRTC を利用しリアルタイムで提供し、それ以外のユーザには MPEG-DASH と CDN と組み合わせて、数万人規模への提供が可能になった。もちろん Chrome/Firefox で再生可能だ。
更に Sora では WebRTC から MPEG-DASH への変換は一切行わず、枠組みを組み立て直すだけで実現している。そのためトランスコードは発生しない。
この機能を使えば、WebRTC では実現できなかったリアルタイム以外の追っかけ再生などが実現できるようになる。
スナップショット機能
WebRTC といえば映像の配信が魅力だが、通信や負荷の状況で音声だけの配信を行うという選択を迫られる場合がある。
リアルタイムを重視している WebRTC は通信の状況や、マシンリソースに映像の画質が大きく影響してしまう。
ただ、音声だけだと相手の顔のイメージが湧きにくく打ち合わせをしづらい。
Sora では音声だけでなく定期的に相手の映像から切り出した画像を送る仕組みを追加した。実際に切り出しているため変換は行っていない。
そのためサーバ側の負荷はほとんどない。
ビットレートが 100キロバイト/秒 の映像と 10 秒に 1 回 10 キロバイトの画像を送るのでは、100 倍差がでる。これはモバイルであればバッテリー消費も抑えられることになる。
メリットだらけに見えるが、画像形式に WebP という Chrome でしか対応していない画像形式を採用しており、制限が大きい。さらにビデオコーデックには VP8 を利用している前提となっている。
これは VP8 からの切り出しが WebP 形式でしか行えないためだ。VP9 や H.264 では WebP 形式での切り出しはできない。
今後は変換は必要になるが WebP を PNG に変更したり VP9 からの切り出しなどへ対応していきたいと考えている。