从PC到Mobile的实时屏幕流

时间:2018-02-28 09:20:30

标签: c# unity3d casting synchronization

我正在开发一个项目,我正在使用jsp页面将桌面屏幕投射到Android移动设备上。我正在开发统一的Android应用程序。我们正在统一显示jsp页面。它落后了很多。我想在演员中实现同步。

这是我们用于Android应用的 C#代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Threading;
public class LoadSprite : MonoBehaviour {
public float sensitivityX = 15F;
public float sensitivityY = 15F;
string url = "http://" + ServerConstant.ipadd + ":" + ServerConstant.portno 
+ "/VRGamming/pages/phone.jsp?methodId=screenshot";

void Start () {

    //InvokeRepeating("UpdateInterval", 0f, 0.066f);
    InvokeRepeating("UpdateInterval", 0f, 0.0762f);
    Resources.UnloadUnusedAssets();
}

void UpdateInterval()
{

    StartCoroutine(disp());
}

IEnumerator disp()
{

    WWW www = new WWW(url);
    while (!www.isDone)
        yield return null;
    GameObject image = GameObject.Find("RawImage");
    image.GetComponent<RawImage>().texture = www.texture;
    DestroyImmediate(www.texture);
    www.Dispose();
    image = null;
    Resources.UnloadUnusedAssets();
 }


  }

1 个答案:

答案 0 :(得分:0)

您的瓶颈很可能是图像压缩不足以实现“实时”同步屏幕投射。

发送1920 x 1080显示屏的直接原始屏幕截图,大约是mb或2作为原始bmp。

也许尝试类似: https://github.com/aleh/jpegator

作为图像的预处理器,然后通过网络发送它们。 也许另一种解决方案可能是使用SharpZipLib - 并自己将字节数据rar / zip压缩到尽可能小的尺寸,然后在客户端/接收器端解压缩数据。

不幸的是,您不太可能获得100%的同步投射。

您将从图像带宽(大小)中获得延迟 或者压缩和解压缩图像所需的处理时间的延迟(处理)。