Потоковая загрузка аудио с UnityWebRequest

Импорт текстур, моделей, звуков и пр.

Потоковая загрузка аудио с UnityWebRequest

Сообщение GospelOfMyHeart 19 май 2019, 10:52

Здравствуйте, у меня проблема, никак не могу сообразить, как сделать потоковую загрузку аудио с сервера. То есть, на сервере лежит аудио файл, мне нужно его не просто скачать и воспроизвести, а воспроизводить во время скачки и сохранить на время запуска приложения. Н-ый день ломаю голову, в гугле ничего толкового не написано. Из хендлера можно достать скачанные байты, но я не знаю, что с ними и как можно сделать. Пока что код следующий:
Синтаксис:
Используется csharp
public class StreamingAudio:MonoBehaviour
{
   public AudioSource audioSource;
   public string URL;
    public void Start()
    {
        StartCoroutine(GetData());
    }

   public IEnumerator GetData()
    {
        // Создаем загрузчик аудио
        DownloadHandlerAudioClip downloadHandler = new DownloadHandlerAudioClip("", AudioType.OGGVORBIS);
        //Делаем загрузку аудио потоковой
        downloadHandler.streamAudio = true;
        UnityWebRequest request = new UnityWebRequest(URL, "GET", downloadHandler, null);

        // Начинаем загрузку аудио
        request.SendWebRequest();
        AudioClip audioClip = null;
        //в цикле проверяем завершенность загрузки
        while (audioClip == null )
        {
           
            try
            {
                //пытаемся получить скаченное аудио
                audioClip = DownloadHandlerAudioClip.GetContent(request);    
            }
            catch (Exception e) {
                //возвращает ошибку, что еще не скачано
                Debug.Log("Exception: " + e.Message);
            }
             //проверяю количество загруженых байтов( то есть, из них можна что-то вытянуть, но как?)
             Debug.Log("Загружено байтов: "+ request.downloadedBytes );
            yield return 0f;
        }

        // кладу загруженное аудио в аудиосоурс
        audioSource.clip = audioClip;
        audioSource.Play();

        yield return 0;
    }
}
 
Последний раз редактировалось GospelOfMyHeart 19 май 2019, 19:30, всего редактировалось 1 раз.
GospelOfMyHeart
UNец
 
Сообщения: 10
Зарегистрирован: 12 май 2019, 22:35

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение Jarico 19 май 2019, 13:54

Средствами Unity такое не прокатит, нужны сторонние либы
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение GospelOfMyHeart 19 май 2019, 16:09

А какими, к примеру? Просто я мало разбираюсь в самой структуре аудио и даже не очень представляю, как можно будет закастить его к AudioClip`у в юнити.
GospelOfMyHeart
UNец
 
Сообщения: 10
Зарегистрирован: 12 май 2019, 22:35

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение seaman 19 май 2019, 22:39

Средствами Unity такое не прокатит, нужны сторонние либы

А пробовали?
Зачем тогда вообще это в Юнити есть?
https://docs.unity3d.com/ScriptReferenc ... Audio.html
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение GospelOfMyHeart 23 май 2019, 09:21

seaman писал(а):
Средствами Unity такое не прокатит, нужны сторонние либы

А пробовали?
Зачем тогда вообще это в Юнити есть?
https://docs.unity3d.com/ScriptReferenc ... Audio.html

В коде я выставил это свойство в true, но аудио все равно не удается достать до того, как файл загрузится полностью. Возможно надо не GetContent() использовать, что-то другое?
GospelOfMyHeart
UNец
 
Сообщения: 10
Зарегистрирован: 12 май 2019, 22:35

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение seaman 23 май 2019, 10:11

Проигрывать аудио можно до полной загрузки.
Частично загруженные данные можно попробовать получить через https://docs.unity3d.com/ScriptReferenc ... tData.html
Не пробовал. Попробуйте и скажите что получилось.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение GospelOfMyHeart 23 май 2019, 13:17

GetData() возвращает массив байтов, сообственно, оно никак не приведеться к аудиоклипу. Так что так не получится
GospelOfMyHeart
UNец
 
Сообщения: 10
Зарегистрирован: 12 май 2019, 22:35

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение GospelOfMyHeart 23 май 2019, 14:53

Error: Cannot create FMOD::Sound instance for resource 0x*: , (Unsupported file or audio format. )
ошибка возвращается, при попытке получения аудио файла из audioClip = downloadHandler.audioClip. Что это, почему это? Я уже не знаю, что можно сделать
GospelOfMyHeart
UNец
 
Сообщения: 10
Зарегистрирован: 12 май 2019, 22:35

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение AngryCat 26 май 2019, 14:09

Не понимаю смысла. Ведь аудио можно грузить заранее и производить в нужный момент!? Зачем танцы с бубном??
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение GospelOfMyHeart 27 май 2019, 17:12

AngryCat писал(а):Не понимаю смысла. Ведь аудио можно грузить заранее и производить в нужный момент!? Зачем танцы с бубном??

Ответ: Надо.
Я разорбрался с этим. Дело в том, что я делал все на старой версии юнити (2018.2.21). После обновления до 2018.4 LTS, все начало работать и не выдавать ошибки. Единственно что, код немного поменял. Достаю не через GetContent(), а через downloadHandler.audioclip и не в while. В while я лишь проверяю, насколько загрузился аудиоклип (request.downloadprogress<0.15f). После выхода с цикла, чуть ниже забираю из хендлера аудиоклип. Обновляйте юнити, крч.
Последний раз редактировалось GospelOfMyHeart 27 май 2019, 17:15, всего редактировалось 1 раз.
GospelOfMyHeart
UNец
 
Сообщения: 10
Зарегистрирован: 12 май 2019, 22:35

Re: Потоковая загрузка аудио с UnityWebRequest

Сообщение AngryCat 27 май 2019, 17:14

Нууу, как способ еще можно делать при помощи плагина на Voice Chat. Это же по сути то, что ты написал выше
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099


Вернуться в Медиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2