Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Networking;
- using NAudio;
- using NAudio.Wave;
- using System.IO;
- using Assets;
- public class stream : MonoBehaviour
- {
- public string URL;
- // Start is called before the first frame update
- void Start()
- {
- StartCoroutine(PlayAudioStrem());
- }
- IEnumerator PlayAudioStrem()
- {
- using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(URL, AudioType.MPEG))
- {
- DownloadHandlerAudioClip dHA = new DownloadHandlerAudioClip(string.Empty, AudioType.MPEG);
- dHA.streamAudio = true;
- www.downloadHandler = dHA;
- www.SendWebRequest();
- while (www.downloadProgress < 0.01)
- {
- Debug.Log(www.downloadProgress);
- yield return new WaitForSeconds(.1f);
- }
- if (www.isNetworkError)
- {
- Debug.Log("error");
- }
- else
- {
- // AudioClip audioClip = AudioClip.Create("testSound", wav.SampleCount, 1,wav.Frequency, false);
- //audioClip.SetData(wav.LeftChannel, 0);
- // Return the clip
- // return audioClip; Debug.Log(dHA.audioClip);
- GetComponent<AudioSource>().clip = FromMp3Data(www.downloadHandler.data);
- float _m1SongTime = GetComponent<AudioSource>().clip.length + Time.time;
- // float _m1SongTime = GetComponent<AudioSource>().clip.length + Time.time;
- }
- }
- }
- public static AudioClip FromMp3Data(byte[] data)
- {
- // Load the data into a stream
- MemoryStream mp3stream = new MemoryStream(data);
- // Convert the data in the stream to WAV format
- Mp3FileReader mp3audio = new Mp3FileReader(mp3stream);
- WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(mp3audio);
- // Convert to WAV data
- WAV wav = new WAV(AudioMemStream(waveStream).ToArray());
- Debug.Log(wav);
- AudioClip audioClip = AudioClip.Create("testSound", wav.SampleCount, 1, wav.Frequency, false);
- audioClip.SetData(wav.LeftChannel, 0);
- // Return the clip
- return audioClip;
- }
- private static MemoryStream AudioMemStream(WaveStream waveStream)
- {
- MemoryStream outputStream = new MemoryStream();
- using (WaveFileWriter waveFileWriter = new WaveFileWriter(outputStream, waveStream.WaveFormat))
- {
- byte[] bytes = new byte[waveStream.Length];
- waveStream.Position = 0;
- waveStream.Read(bytes, 0, Convert.ToInt32(waveStream.Length));
- waveFileWriter.Write(bytes, 0, bytes.Length);
- waveFileWriter.Flush();
- }
- return outputStream;
- }
- // Update is called once per frame
- void Update()
- {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement