正如问题所述,我一直在尝试将 WebCamTexture 从带有网络摄像头的客户端流式传输到服务器。双方(客户端和服务器)都在 Unity 中。稍后,客户端将部署到 Android,而服务器将是一个桌面应用程序。
目前我正在使用以下方法获取纹理的像素:
tex.GetPixels32();
Run Code Online (Sandbox Code Playgroud)
并使用自定义序列化程序对它们进行序列化(以优化其大小)。我目前有一个未压缩的字节数组,每帧大约 3.5MB 准备发送。我知道它很大,但我想在压缩部分和实时部分开始之前传输它。
该过程的最后一部分应该是使用新的 Unity NetworkTransport 静态类发送它。距离上次用sockets已经很久了,真的很烂。目前我无法让它工作。
这是我的服务器端代码(为清楚起见省略了序列化代码):
void Start()
{
webcamTexture = new WebCamTexture();
Background.texture = webcamTexture;
Background.material.mainTexture = webcamTexture;
webcamTexture.Play();
if (!_isStarted)
{
_isStarted = true;
NetworkTransport.Init();
m_Config = new ConnectionConfig();
m_CommunicationChannel = m_Config.AddChannel(QosType.ReliableFragmented);
HostTopology topology = new HostTopology(m_Config, 12);
m_GenericHostId = NetworkTransport.AddHost(topology, 0);
byte error;
m_ConnectionId = NetworkTransport.Connect(m_GenericHostId, ip, port, 0, out error);
}
}
void Update()
{
if (!_isStarted)
return;
NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out …Run Code Online (Sandbox Code Playgroud) c# textures video-streaming unity-game-engine unity-networking