Изображение, передаваемое через TCP, обычно пустое - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь передать канал в реальном времени между двумя устройствами.Ниже приведен мой код для отправки данных изображения клиенту, к которому подключено устройство.Сервер является мобильным устройством.

 WaitForEndOfFrame endOfFrame = new WaitForEndOfFrame();

IEnumerator senderCOR()
{

    bool isConnected = false;
    TcpClient client = null;
    NetworkStream stream = null;

    // Wait for client to connect in another Thread 
    Loom.RunAsync(() =>
    {
        while (!stop)
        {
            // Wait for client connection
            client = listner.AcceptTcpClient();
            // We are connected
            clients.Add(client);

            isConnected = true;
            stream = client.GetStream();
        }
    });

    //Wait until client has connected
    while (!isConnected)
    {
        yield return null;
    }

    LOG("Connected!");

    bool readyToGetFrame = true;

    byte[] frameBytesLength = new byte[SEND_RECEIVE_COUNT];

    while (!stop)
    {
        //Wait for End of frame
        yield return endOfFrame;
        currentTexture.SetPixels(backCam.GetPixels());
        byte[] pngBytes = currentTexture.EncodeToPNG();
        //Fill total byte length to send. Result is stored in frameBytesLength
        byteLengthToFrameByteArray(pngBytes.Length, frameBytesLength);
        string savePath = Path.Combine(Application.persistentDataPath, "ph.png");
        saveImage(savePath,pngBytes);
        //Set readyToGetFrame false
        readyToGetFrame = false;

        Loom.RunAsync(() =>
        {


            //Send total byte count first
            stream.Write(frameBytesLength, 0, frameBytesLength.Length);
            LOG("Sent Image byte Length: " + frameBytesLength.Length);

            //Send the image bytes
            stream.Write(pngBytes, 0, pngBytes.Length);
            LOG("Sending Image byte array data : " + pngBytes.Length);

            //Sent. Set readyToGetFrame true
            readyToGetFrame = true;
        });

        //Wait until we are ready to get new frame(Until we are done sending data)
        while (!readyToGetFrame)
        {
            LOG("Waiting To get new frame");
            yield return null;
        }
    }
}

Проблема здесь в том, что изображение «ph.png», которое является сохраненным изображением, всегда является пустым изображением.Это должно быть питание от камеры.Как я могу разобраться с этим?

...