WebRTC で実現する STADIA もどき

なぜもどきなのかというと、大規模なインフラという最大の課題はそう簡単には解決できないからです。

ちなみに今回 STADIA もどきを実現したのは自分ではなく tnoho ですので、お間違いなく。自分はただ解説を書いてるだけの人です。

まずはこのデモの説明をしていきます。

Windows から iPad へ

配信をしている側には WebRTC Native Client Momo を Windows に対応させ、さらに画面共有機能を実現しています。後は普通に P2P で Safari とやり取りをしています。

画面共有機能にはない、音声を作り込むことで取得することで Opus のステレオで配信できるようになっているのがかなりの強みです。

Image for post
Image for post

今回の例は全画面共有なのでそこから映像と音声を取得して Momo を経由して Safari に送っています。音声コーデックは Safari で、映像コーデックは VP8 です。

Safari は送られてきた音声と映像を表示しているだけです。

iPad から Windows へ

Safari に対するタッチ操作を WebRTC DataChannel を利用して Momo 経由で Windows 側に送っています。

Image for post
Image for post

Momo に新しく DataChannel 機能と、Windows 側のマウスを操作する機能を追加することで実現しています。

動画を見てもらえればわかりますがローカルということもありますが、ほぼ遅延がありません。RainWay に近いところまでは来ました。

ざっくりとした機能的な意味で残っているのはハードウェアエンコーダ対応とゲームパッド対応でしょうか。

ハードウェアエンコーダ対応

高解像度、高フレームレートを実現するための NVIDIA や AMD に搭載している映像のハードウェアエンコーダ機能でしょう。ただ H.264 のみの対応がほとんどなので、VP8 が使えなくなるのは大変残念です。将来的には AV1 になっていくのだと思っています。

ゲームパッド対応

これはブラウザでやる場合は GamePad API を使うことで実現可能です。

それよりはハードウェア的なゲームパッドに Momo 組み込んでゲームパッドが直接 Windows に DataChannel で通信をするところまで持っていけばより STADIA もどきになりそうです。

まとめ

WebRTC を利用することで STADIA もどきを実現できそうです。ただお気付きの通り一般企業がこれをビジネスとして行うのはかなり難しいです。

そのため、どこかの企業がこの技術を利用してなにか面白いことをしてくれるのを楽しみにしています。

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