WebRTC サーバを開発する理由

ブラウザ同士がやりとりする WebRTC 、当たり前だが WebRTC をサーバ側に用意することでブラウザとサーバでのやりとりを実現する事ができる。

理由はたった一つでサーバ側で配信データをコントロールすることが出来るようになるからだ。

通常の WebRTC を使って一人が複数人に配信する場合はこうなる

Image for post
Image for post

だが、WebRTC サーバがあるとこうなる

Image for post
Image for post

大きく違うのはサーバがブラウザを管理したり、データの流れを管理できるようになることだ。これはニコニコ動画の生放送をイメージして貰えば良いと思う。

もちろんサーバを経由することでサーバ側での録画も可能になる。もともとクライアント側で録画はできたが、P2P で動作されるとサーバ側での録画は難しくなるからだ。

これらの仕組みをプラットフォームとして提供しているのが tokbox だ。

このプラットフォームは録画にも対応しているし、とても良くできている。スペインの電話会社がすぐ買収したのも頷ける。

さて、WebRTC サーバを作るためには色々な技術が必要になるが、一番の難関は DTLS-SRTP というよくわからない仕組みだ。

DTLS というのは TLS のデータグラム用(UDP や SCTP 向け)だ。これ意外にライブラリが無い。もちろん OpenSSL には実装されているのでそれ使えばいい。

が、あえて自前で実装してみた。理由は Erlang でスケールさせて動作させたかったから。

4 ヶ月だらだら開発していて、昨日やっと動作した。

SRTP というメディアチャネルで使われている音声や動画を暗号化する仕組み自体は手元にあるので、あとはこのあたりと連携すれば、WebRTC サーバまであと一息だ。

時雨堂 WebRTC サーバ開発ログ https://gist.github.com/voluntas/e914aa245fc26f3133c2

WebRTC サーバを使って小さな小さなニコ生システムを作れる日を夢見て開発している。

WebRTC は iOS/Android でもネイティブに動作するため、ゲームに組み込んでゲーム配信をしたりなどもできる。

もちろん、IoT としても使えるだろう。ロボットに WebRTC を組込、ブラウザでロボットの視点を見ることだってできる。

最近はドローンに WebRTC を積んだりしている人もでてきた。WebRTC はブラウザだけのものではない。オープンな音声や動画の配信/受信規格だ。

これは本当にスゴイことで、今後この技術が流行ることを祈りつつ、明日もだらだら開発を続けようと思う。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store