【问题标题】:Unity WebGL: why using downloaded Mp3 or OGG file, audio can't be played?Unity WebGL:为什么使用下载的 Mp3 或 OGG 文件,无法播放音频?
【发布时间】:2019-05-15 15:12:35
【问题描述】:

我需要从 URL 下载音频(OGG、Mp3 或 wav)并播放。

在编辑器中工作正常,在独立构建中也是如此。

但不是在 WebGL 构建中。我遇到任何错误或(取决于格式)这个:

不支持在此平台上流式传输“mpeg” UnityEngine.Networking.DownloadHandlerAudioClip:GetContent(UnityWebRequest)

我的代码:

//这里根据audioURL下载音频 ... WWW 数据 = 新 WWW(audioURL);收益率返回数据; AudioClip 下载Clip = data.GetAudioClipCompressed(false, AudioType.OGGVORBIS) as AudioClip; 如果(下载剪辑!= null) { _audio.clip = 下载的剪辑; } ...

    public void PlayAudio() {
        // Here clip is play
                if (_audio.clip != null && _audio.isPlaying == false)
                    _audio.Play();
                else
                    Debug.Log("Background music not present!");
                _audio.loop = true;
    }

To download clip i've used also (instead first code part):


     using (UnityWebRequest www2 = UnityWebRequestMultimedia.GetAudioClip(audioURL, AudioType.OGGVORBIS))
            {
                yield return www2.SendWebRequest();

                if (www2.isHttpError)
                {
                    Debug.Log(www2.error);
                    LogAdd(www.error, true);
                }
                else
                {
                    AudioClip downloadedClip = DownloadHandlerAudioClip.GetContent(www2);                
                    _audio.clip = downloadedClip;
                }
            }

由于某种原因,无法播放 webgl 中的音频。

编辑 1:上传 MP3 时,错误(也在编辑器中)是:

不支持在此平台上流式传输“mpeg” UnityEngine.Networking.DownloadHandlerAudioClip:GetContent(UnityWebRequest)

【问题讨论】:

  • 从错误来看,我猜你的文件实际上不是 mp3 或 ogg,而是 mpeg 文件格式。我不确定 why webgl 不支持流式 mpeg 文件,但根据该错误判断,您将无法正常工作。您是否尝试过使用您绝对确定是 MP3 或 OGG 的不同音频文件?我建议只从 Audacity 之类的文件中导出文件,以确保您确实使用了您期望的文件格式。
  • 我已经尝试转换为 mp3 来确定,但没有成功!

标签: c# unity3d unity-webgl


【解决方案1】:

Unity文档中提到音频格式应该是浏览器原生支持的,你可以从这个链接查看支持状态:

https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats

或者简单地使用音频标签来检查文件。

我之前测试过,ogg 适合 chrome 和 firefox,而 mp3 适合 safari

【讨论】:

    【解决方案2】:

    “Mp3”是MPEG-3的缩写;事实上,如果您查看 Unity 的 AudioTypes,它明确地将 MPEG AudioType 定义为“MP2/MP3 MPEG”。

    所以基本上:尝试使用非 mp3 文件。

    【讨论】:

      【解决方案3】:

      我解决了升级到 2018.4 的问题。

      现在它可以毫无问题地与 MP3 一起使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-29
        • 1970-01-01
        相关资源
        最近更新 更多