2017-01-04 80 views
1

我正在開發Unity 5中的無人機模擬器,並且我的場景中有4個Unity照相機。我現在正在努力解決在Unity中的一個虛擬攝像頭的屏幕,我的android智能手機,實時。 我在想這些步驟:Unity 5 - 流Unity照相機到智能手機

  1. 使用Texture2D.ReadPixels

  2. 編碼的Texture2D使用EncodeToJPG或EncodeToPNG

3.發送閱讀屏幕像素到一個空的Texture2D到設備的編碼字節(通過套接字到設備;或使用this WebRTC解決方案)

  • 在設備:讀取字節到的圖像(例如使用實施ByteArrayInputStream的和BitmapFactory的組合)
  • 我已經完成了前兩個步驟。現在我不知道如何使用套接字,所以我使用WebRTC。但是,我如何在Unity項目中實現JavaScript代碼?有人可以幫助我嗎?

    我在論壇中發現了一個WebRTC API,但是我的網絡技能不夠好。也許有人可以告訴我,我在這個代碼中創建了點對點連接?

    論壇:https://forum.unity3d.com/threads/unitypeerjs-simple-webrtc-support-for-unity-webgl.310166/

    代碼(API的WebRTC團結):https://www.pastiebin.com/embed/5880b2815c96a

    +0

    當我讀到你的問題時,我首先想到的是製作一個簡單的客戶端/服務器應用程序。因此,您的客戶端應用程序必須連接到服務器並共享服務器攝像頭。應該更容易製作 –

    +0

    您使用的是哪種相機?如果您有一臺通過WiFi流式傳輸視頻的操作攝像頭,那麼您可以直接使用商店中提供的任何視頻播放器(例如搜索VLC)或5.6測試版中提供的傳入視頻播放器直接讀取該視頻流。 – Vancete

    +0

    謝謝你所有的答案。 @Vancete你的意思是哪個相機?在我的場景中,目前有4個Unity相機和其中一個,我想同時發送,所以我的智能手機。 – murcoder

    回答

    0

    您將無法使用Unity到流編碼的JPG。一個主要原因是,JPEG解碼過程會阻止主線程,直到解碼JPEG並將所得像素數據上載到GPU上 - 這會在所有平臺上導致嚴重的性能問題。目前還沒有任何類型的視頻接收器的流式視頻的完整防彈變形 - somewhere on the Unity Roadmap is to enable video streaming from the builtin video player

    As of Dec 2017

    如果你的Android的應用程序是不團結依賴,你可以使用HLS或MPEG-短跑如流變種 - 你需要一個視頻緩衝器不管,這可能是因爲微小的5 - 10幀。一種變體是將視頻幀直接彙集到FFMPEG,這允許您將其解碼爲HLS流。其他變體,如果源設備和Android設備之間沒有很長的距離,則爲RTC或RTSP流。

    如果你仍然堅持Android上的Unity,那麼你可能會對這個資產有好運:https://www.assetstore.unity3d.com/en/#!/content/56355(他們提供免費和縮減版本) - 我們在生產中使用它很多,它可以讓你的系統Unity內的默認編碼器。

    根據您的用例,JPEG2000可以工作,然後只需要瀏覽器鏈接即可。 JPEG2000允許你基本上保持一個開放的套接字,拋出jpeg數據。 (Unity也不支持這個。)