получать файлы с http-сервера без зависания на единстве - PullRequest
1 голос
/ 06 августа 2020

Я не знаю, подходящее ли слово «замораживание». Я работаю над Volumetri c Video Player. У меня есть http-сервер, и я хочу получать кадры с этого сервера. Структуры, которые я называю кадрами, состоят из трехмерных объектов, в отличие от традиционных видео. И каждый пакет, который я получаю с сервера, состоит из нескольких кадров.

Теперь вернемся к проблеме:

private IEnumerator Get(string url)
    {
        int htmlNumber = 0;
        int i = 0;
        while (i < 100)
        {
            string sequentialUrl = url + "_" + htmlNumber.ToString();
            Debug.Log(sequentialUrl);
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Get(sequentialUrl))
            {
                yield return unityWebRequest.SendWebRequest();
                // This method returns an AsyncOperation object. Yielding the AsyncOperation inside a 
                //coroutine will cause the coroutine to pause until the UnityWebRequest encounters a system error or finishes communicating.
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Debug.Log("error");
                }
                else
                {
                    byte[] results = unityWebRequest.downloadHandler.data;
                    allResult.Add(results);
                }
            }
             i++;
             htmlNumber++;
        }    
    }

Это моя структура для получения кадров. Он работает хорошо. Я могу получить все пакеты, но проблема в этой строке:

"yield return unityWebRequest.SendWebRequest();"

Как видите, программа остается в этой строке до тех пор, пока не будет завершен запрос пакета. Например, если размер моего пакета составляет 100 МБ, это время ожидания в моих условиях будет примерно 3-4 секунды.

Приятно то, что размеры моего пакета не такие большие (около 500 КБ). Но даже если его размер небольшой, на этом шаге видеоплеер зависает. Потому что, с одной стороны, видеопроигрыватель работает, но как раз в это время запрос на получение останавливает систему на небольшие промежутки времени.

Я не могу больше уменьшать размеры пакетов. Какой совет вы бы дали?

Спасибо советом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...