Unityでシンプルなビデオチャットを実装するアセット「Video Chat」。
使う機会があったのでメモしておきます。
目次
アセットの内容
アセットは、シンプルなビデオチャットになります。
通信は1:1。Legacy Unity NetworkではP2P、PhtoonではPhoton経由のやりとりのようです。
アセットストアのURL
アセットストアのURLはこちらになります。
価格
お値段は$100。
対応プラットフォーム
私のところで確認したのは、Windows10(64bit)とAndroid(4.4以降)。
公式の動画をみるとMacやiOSでも大丈夫そう?
通信方法
対応している通信環境は、
・Legacy Unity Network
・TNet
・Photon
の三種類でした。
それぞれのネットワークについてはこちらが詳しい。
Legacy Unity NetworkはいわゆるP2Pで、端末同士で直接接続してやっているみたい。
TNetはそのLegacy Unity Networkにブチ切れたNGUIの人が作った通信用アセットのよう。
PhotonはPhotonという通信サービスを利用したものです。これは通信を行うゲームでは結構使われている感じのサービス。Voice Chat開発からのおすすめはこれらしい。
どれかの端末が親になって、それに接続しにいくという方式のようです。
私はLegacy Unity NetworkとPhotonでの通信について試しました。
画質、音質
画質は「Low」「Mid」「High」「Super」、音質は「Low」「High」としかなかったので具体的にはわからなかった。
画質については調べたところ、Low=64x64、Mid=128x128、High=256x256、Super=512x512のよう。
通信する端末の両方であわせないと、サンプルでは動作がおかしくなりました。
(このへんは作り方次第かもしれない)
実際に使ってみる
Legacy Unity Networkでの使用
アセットを購入、インポートしたら「ExampleUnityNetLegacy」にあるSceneを開きます。
それを、二つ以上の同じネットワークに所属している端末で実行します。UnityEditorとAndroid端末で実行しました。
それで最初にどれかの端末が「Start」をして、続いて別の端末で「Join」をすると相手の映像と音声がお互いの端末に送信されます。
どうもブロードキャストで探しにいっているようなので、IPアドレスの指定などはありませんでした。
コードを見てみると、「Start」のほうで実行しているNetwork.InitializeServerでポートを指定してサーバーを起動し、クライアントからはNetwork.Connectで相手を指定しているようでした。
このへんを固定してやれば、IPアドレスによる指定などもできるかも。
Photonでの使用
Photonは「ExamplePhoton」の下にあるSceneを開きます。
そして別途PhotonのアセットをImportする必要があります。
こちらは20CCU(同時接続)までは無料なので、とりあえず登録して使えるようにしましょう。
で、入れるとAppIDを入力しろみたいなことを言われるので、ダッシュボードのRealtimeからIDを取得して入力します。
PhotonではPUNのほうで使用するアプリケーションのIDも、Realtimeのほうで管理しているみたい? プランがRealtimeとServer(オンプレ)の二種類になってるのかな。
で、VideoChatExamplePhoton.csを開いて修正します。
このファイルの下の方には、クラスがまるごとコメントアウトしてあるので、そのコメントを外します。
同時に、上で定義されていたクラスをまるっとコメントアウトします。
Photonのアセットが入っていれば、これでエラーにならない。
あとはLegacy Unity Networkのように、二つの端末にインストールしてどちらかが「Start」、後からのほうが「Join」をすればビデオ通話ができます。
使ってみた感想など
Unityでお手軽にできる、(Legacy Unity Networkなら)無料でP2P、テクスチャにビデオを貼れる、Androidでも一応動くというところはよかった。
ただちょっと動作が安定しない感じや、画像や音声が途切れたり遅延したりというのが多くて調整は必要かもしれない。
あと、親になった端末で話した音声が、親のヘッドフォンからも聞こえるんだけど、これをどう設定すれば解除できるのかサンプルではわからなかった…
Photon経由したアプリを作っていて、そこに1:1のビデオチャットを乗せたいというなら使えるかも知れない。
といいますか、もうちょっとドキュメント書いてくれてもいいんじゃないのかな…
せめてAPIリファレンスとか、チュートリアルとか、対応してるプラットフォームとか、端末とか、1:1なのかn:nなのかとか…そういうスペックを買う前にさあ…
無料だったらまあって感じはありますが$100 (約10000円)だし…