Loading external mp3 on webGL


I am trying to load external mp3 file when using WebGL I am getting:

Streaming of 'mp3' on this platform is not supported

Here is the code:

IEnumerator LoadAudio()
		WWW www = new WWW ("file://"+audioPath);
		yield return www;

		if (string.IsNullOrEmpty (www.error)) {

			audioSource.clip = www.GetAudioClipCompressed (false, AudioType.MPEG);
			audioSource.Play ();

		} else {
			Debug.LogError (www.error);

I am totally fine with not streaming it, can read the whole thing before playing.
Any pointers?


No. Unity doesn’t support mp3 at runtime on any platform except mobile since mobile devices have a hardware MPEG decoder. On mobile only streaming mp3s are supported as the data can’t be processed by the engine itself. The Untiy engine doesn’t have a mp3 decoder. The only formats Unity can read at runtime are: ogg, wav, XM, IT, MOD and S3M. Just have a look at the documentation.

If you want to be able to load mp3s at runtime, you would need a third party mp3 decoder which is 100% managed code, otherwise it can’t be crosscompiled to JS. One example is this .NET port of JavaLayer released under LGPL. I once used it in a webplayer build in Unity. This library can decode mp3 data and convert it to PCM samples which you can feed to Unity’s audiosystem.