時雨堂の WebRTC に関する取り組み

2020 年 8 月版

V
shiguredo
6 min readAug 22, 2020

--

WebRTC 関連でどんなことをやっているか、やっていこうかというのを書いていこうと思います。時雨堂が WebRTC で何をやろうとしているのかの可視化です。

毎月書いていこうと考えています。時雨堂の WebRTC 製品に興味がある方は読んでみていただけると嬉しいです。

今後 WebRTC SFU Sora は独立して書くことにしました。WebRTC SFU Sora については以下をご確認ください。

WebRTC Native Client Momo

詳細については OpenMomo プロジェクト をご確認下さい。

方針

WebRTC Native Client Momo はビルドの簡易化、libwebrtc への追従、単体で完結する事がメインです。

様々な OS やアーキテクチャーに対応しており、それらを簡易化し、誰もが簡単にビルドできるようにしています。また libwebrtc の最新バージョンに追従することで最新の技術を積極的に使えます。

ハードウェアエンコーダーへの対応も積極的にすすめています。現時点では Raspberry Pi と macOS 、Jetson Nano 、NVIDIA ビデオカードに搭載されているハードウェアエンコーダに対応しています。

H.265 対応

Safari TP 105 から WebRTC で H.265 が利用可能になりました。ライセンス的には H.264 と同等で HWA エンコーダーを利用する前提のため、Momo は特に問題ありません。

feature/h265 ですでに利用可能です。こちらはリリース予定は今の所アリませんので、試してみたい方は GitHub Actions が生成するバイナリか自前でビルドしてみてください。

SDL 部分の拡張用サンプルとドキュメント

Momo は SDL を利用することで、音声や映像を受信できますが、そちらを気軽にカスタマイズできるようなドキュメントを用意する予定です。

また、簡単なサンプルとしてマイクやビデオのミュートボタンをつけたりする予定です。右下にアイコンを出す予定です。

libwebrtc M86 対応

m86 のブランチフリーズがされました。Momo は最新の libwebrtc がフリーズされたタイミングで積極的に最新版を利用するようにしています。

これは libwebrtc へのフィードバックができればと考えているためです。

映像リサイズの無効化オプション

libwebrtc に新しくフィールドトライアルとして映像リサイズの無効化が入っていました。これを Momo の引数から利用できるようにしようかと考えています。

— disable-video-resize を用意する予定です。 — fix-resolution は deprecated にする予定です。

WebRTC Signaling Server Ayame

詳細については OpenAyame プロジェクト をご確認下さい。

方針

WebRTC Signaling Server Ayame はベンダーロックフリーの WebRTC P2P サーバをオープンソースで公開するというのが目的です。ソースコードもそうですが、仕様自体もドキュメントとして公開しています。

1対1 のやり取りとして絞り込むことでとてもシンプルな仕様を実現しています。

基本的にはメンテナンスモードですが、少しずつ改善をしていく予定です。

WebSocket ライブラリの切り替え検討

以下の WebSocketライブラリへの切り替えを検討しています。

Go サンプルの追加

送信のみですが Pion を利用したサンプルを検討しています。

Python サンプルの追加

送信のみですが aiortc を利用したサンプルを検討しています。

WebRTC React Native WebRTC Kit

サイマルキャストへの対応

libwebrtc のサイマルキャストの実装が落ち着いてきたこともあり、対応を進めていきます。

統計機能への対応

getStats への対応をしていく予定です。サイマルキャストの対応が終わったら対応予定です。

libwebrtc M86 へのアップデート

10 月にリリース予定です。

React Native for Windows 対応

React Native for Windows の vnext を前提に Windows 向けの WebRTC 対応を進めています。そもそも React Native for Windows 自体の情報がないので手探りで進めています。

React Native for macOS 対応

React Native for macOS 向けの WebRTC を進めていこうと考えています。Windows と並行ということもあり、対応速度はゆっくりにはなりますが、 VideoToolbox 対応、H.265 対応などを考えています。

--

--