Я пытаюсь отобразить видеопоток с IP-камеры в приложении на Unity3D.Я взял за основу различные примеры из пособий и форумов.Вот код:
public class MainCameraController : MonoBehaviour {
private Texture2D IpCameraTexture;
UnityWebRequest VideoRequest;
private string sourceURL = "http://192.168.100.107/axis-cgi/mjpg/video.cgi";
void Start() {
IpCameraTexture = new Texture2D (50, 50, TextureFormat.RGB24, false);
StartCoroutine(GetFrame());
}
public IEnumerator GetFrame() {
string authorization = "Basic " + System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("admin:admin"));
VideoRequest = new UnityWebRequest (sourceURL, UnityWebRequest.kHttpVerbGET); VideoRequest.SetRequestHeader("AUTHORIZATION", authorization);
VideoRequest.downloadHandler = new DownloadHandlerBuffer();
VideoRequest.Send();
while (true) {
yield return null; if (! string.IsNullOrEmpty(VideoRequest.error)) throw new UnityException(VideoRequest.error);
if (VideoRequest.downloadHandler.data != null)
{
IpCameraTexture.LoadRawTextureData(VideoRequest.downloadHandler.data);
IpCameraTexture.Apply();
}
}
}
public void OnGUI() {
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), IpCameraTexture);
}
public void Update() {
}
}
Отображает размытые квадраты на экране вместо видео и отображает ошибку «Нет данных текстуры для LoadRawTextureData».