質問: ### 実現したいこと Unityでの実現、カメラはTheta SをUSB接続で使用しています。(言語はC#) WebCamTextureクラスでデバイスからWebカメラからライブストリーミングを取ってくるとします。 このライブストリーミングの映像(画像)の通信を行い、別PCのUnityでこのライブストリーミングを取得&表示する方法はありますか? ### 気になること Texture2DクラスのEncodeToPNGなどをつかってbyte型で通信を行おうとした。WebCamTexture → Texture2Dへの変更仕方がわからなかった。 WebCamTextureクラスでとってこれるものが映像本体ではなく、アドレス情報等だとしたら、一瞬の画像を取得するにはどうすればよいでしょうか?
回答: WebCamTextureからTexture2Dにする方法は以下の通りです。 (メモリの浪費等、ひっかかるポイントが多いのでTexture2Dの作り方は別途詳しく調べることをオススメします) ``` WebCamTexture wc = new WebCamTexture (160, 120); //サイズは適宜調整をしてください wc.play(); Texture2D t = new Texture2D(wc.width, wc.height); t.SetPixels(wc.GetPixels()); t.Apply(); ``` ただ、取得出来るのは結局映像ではなく画像のデータなので、毎フレーム送信処理が必要になります。 テクスチャ生成だけでも結構負荷が高いはずなので、送信側はTexture2Dを介さずに WebCamTextureのGetPixels(ピクセルの色配列)をそのまま通信(自力で文字列等にする) →受信側のPCで(ピクセルの色配列に戻して)Texture2DのSetPixelsを行う とすると多少はマシになるのではないかと思います。(現実的かは分かりませんが......)