Loading external mp3 on webGL

Hey!

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?

Thanks!

1 Answer

1

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.