Skip to content

Instantly share code, notes, and snippets.

@melpon
Last active October 15, 2020 15:06
Show Gist options
  • Save melpon/8ba5197d71ece3b034abfcd0f7cb10db to your computer and use it in GitHub Desktop.
Save melpon/8ba5197d71ece3b034abfcd0f7cb10db to your computer and use it in GitHub Desktop.
Wata プロジェクトについて

最終更新日: 2019/5/30

Wata プロジェクト

Wata の現在の状態をここに書きます。常にこのページが最新の情報になります。

Wata とは

Wata は、合同会社 Wandbox が作っている バーチャルライバー特化型の配信ミドルウェア です。

バーチャルライバーが配信したモーションデータや音声を、複数人の視聴者に配信できます。

 バーチャルライバー                     +--------+    gRPC
 +-------------+  モーションデータ+音声 |         |  ------------> 視聴者1(iOS)
 | 配信クライアント| -----------------> | Wata    |  ------------> 視聴者2(Android)
 +-------------+                    |         |  ------------> 視聴者3(Windows)
                                    +---------+ -------------> ...

Wata の特徴

Wata

無料版の Wata です。現在準備中です。

無料で使い放題ですが、いくつか機能が制限されています。

Wata Plus

有料版の Wata です。現在準備中です。

Wata に加えて、映像の配信や音声解析、TLS などの機能が追加された製品となります。

年間ライセンスでの提供予定です。

Wata のゴール

Wata のゴールは、バーチャルライバーの配信がより便利になるような機能を追加していくことです。

そのために、以下の機能を追加する予定です。

RTMP 対応

RTMP で Wata に送信することで動画の配信も可能にする予定です。

 バーチャルライバー                      +--------+       RTMP
 +-------------+  映像+音声 (RTMP)    |         |  ------------> 視聴者1(iOS)
 | 配信クライアント | -----------------> | Wata    |  ------------> 視聴者2(Android)
 +-------------+                     |         |  ------------> 視聴者3(Windows)
                                     +---------+ -------------> ...

こうすることで、RTMP に対応した配信クライアント、例えば OBS Studio を使って多人数の視聴者に配信が可能になります。

また、SRT での送受信にも対応する予定です。

ブラウザ視聴

更に、RTMP の映像+音声をブラウザ側で見れるようにする予定です。

一般的には Wata の先に HLS に変換して配信するための CDN を置くと思いますが、Wata では gRPC-Web (または Websocket) で直接ブラウザに送信する方針にします。 こうすることで HLS よりも更に低遅延で映像を配信できるようになります。

 バーチャルライバー                      +--------+    RTMP over gRPC-Web
 +-------------+  映像+音声 (RTMP)    |         |  --------------------> 視聴者1(ブラウザ)
 | 配信クライアント | -----------------> | Wata    |  --------------------> 視聴者2(ブラウザ)
 +-------------+                     |         |  ---------------------> 視聴者3(ブラウザ)
                                     +---------+ ----------------------> ...

デュアルデータ

配信クライアントから Wata に、RTMP の機能とモーションデータ+音声の両方を同時に流せる機能を実装する予定です。

これらの機能を組み合わせることで、iOS, Android と PC のブラウザで同時に視聴可能になります。 iOS, Android にモーションデータ+音声を送信することで、通信容量が小さくなります。

 バーチャルライバー    映像+音声 (RTMP)   +--------+    RTMP over gRPC-Web
 +--------------+  -----------------> |         |  --------------------> 視聴者1(ブラウザ)
 | 配信クライアント |  モーションデータ+音声 | Wata    |       gRPC
 +--------------+  -----------------> |         |  --------------------> 視聴者2(iOS)
                                      +---------+  --------------------> 視聴者3(Android)

問い合わせ

何か聞きたいことがあれば、以下のどれかの方法でお問い合わせ下さい。

  • melpon at wandbox.org にメールを送る
  • @melponn に DM を送る
  • @voluntas に DM を送る(間接的に @melponn に連絡がいきます)

Wata の技術的な話

  • Wata サーバは C++ で書いています
  • Wata クライアントと Wata サーバの通信には gRPC の C++ ライブラリを利用しています
  • Wata サーバは Boost.Beast を利用して API サーバを立てています
  • Wata クライアントは C++ でネイティブプラグインを書き、それを Unity の C# でラップしています
  • 音声は Wata クライアントから Opus で圧縮して送信しています
  • Cloud Speech-to-Text は生の Opus を受け付けないので Ogg Opus にフォーマットを変換して送信しています
  • Windows 版のバイナリは Ubuntu の MinGW で生成しています
  • 映像配信は、RTMP を受け取ったらパースして Video Message を取り出し、ブラウザーが接続してきた WebSocket に対して送信しています

作業ログ

  • 5/30 Wata の提供形態を書いた
  • 5/30 RTMP to ブラウザーの実装を最適化して記事を書いた
  • 4/30 RTMP to ブラウザーを実装した
  • 4/25 Wata のゴールを記述した
  • 4/18 Wata を gRPC 1.20.0 に対応した
  • 4/11 Wata の Windows 版の再生機能を作った。
  • 4/10 Wata の Windows 版の録音機能を作った。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment