Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. using NAudio;
  7. using NAudio.Wave;
  8. using System.IO;
  9. using Assets;
  10.  
  11. public class stream : MonoBehaviour
  12. {
  13. public string URL;
  14.  
  15. // Start is called before the first frame update
  16. void Start()
  17. {
  18. StartCoroutine(PlayAudioStrem());
  19.  
  20. }
  21.  
  22. IEnumerator PlayAudioStrem()
  23. {
  24.  
  25. using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(URL, AudioType.MPEG))
  26. {
  27. DownloadHandlerAudioClip dHA = new DownloadHandlerAudioClip(string.Empty, AudioType.MPEG);
  28. dHA.streamAudio = true;
  29. www.downloadHandler = dHA;
  30. www.SendWebRequest();
  31. while (www.downloadProgress < 0.01)
  32. {
  33. Debug.Log(www.downloadProgress);
  34. yield return new WaitForSeconds(.1f);
  35. }
  36. if (www.isNetworkError)
  37. {
  38. Debug.Log("error");
  39. }
  40. else
  41. {
  42. // AudioClip audioClip = AudioClip.Create("testSound", wav.SampleCount, 1,wav.Frequency, false);
  43. //audioClip.SetData(wav.LeftChannel, 0);
  44. // Return the clip
  45. // return audioClip; Debug.Log(dHA.audioClip);
  46. GetComponent<AudioSource>().clip = FromMp3Data(www.downloadHandler.data);
  47. float _m1SongTime = GetComponent<AudioSource>().clip.length + Time.time;
  48.  
  49.  
  50. // float _m1SongTime = GetComponent<AudioSource>().clip.length + Time.time;
  51. }
  52. }
  53.  
  54. }
  55. public static AudioClip FromMp3Data(byte[] data)
  56. {
  57. // Load the data into a stream
  58. MemoryStream mp3stream = new MemoryStream(data);
  59. // Convert the data in the stream to WAV format
  60. Mp3FileReader mp3audio = new Mp3FileReader(mp3stream);
  61. WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(mp3audio);
  62. // Convert to WAV data
  63. WAV wav = new WAV(AudioMemStream(waveStream).ToArray());
  64. Debug.Log(wav);
  65. AudioClip audioClip = AudioClip.Create("testSound", wav.SampleCount, 1, wav.Frequency, false);
  66. audioClip.SetData(wav.LeftChannel, 0);
  67. // Return the clip
  68. return audioClip;
  69. }
  70. private static MemoryStream AudioMemStream(WaveStream waveStream)
  71. {
  72. MemoryStream outputStream = new MemoryStream();
  73. using (WaveFileWriter waveFileWriter = new WaveFileWriter(outputStream, waveStream.WaveFormat))
  74. {
  75. byte[] bytes = new byte[waveStream.Length];
  76. waveStream.Position = 0;
  77. waveStream.Read(bytes, 0, Convert.ToInt32(waveStream.Length));
  78. waveFileWriter.Write(bytes, 0, bytes.Length);
  79. waveFileWriter.Flush();
  80. }
  81. return outputStream;
  82. }
  83. // Update is called once per frame
  84. void Update()
  85. {
  86.  
  87.  
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement