c# - Unity WebGL:为什么使用下载的 Mp3 或 OGG 文件,无法播放音频?
问题描述
我需要从 URL 下载音频(OGG、Mp3 或 wav)并播放。
在编辑器中工作正常,并且在独立构建中也是如此。
但不是在 WebGL 构建中。我有任何错误或(取决于格式)这个:
不支持在此平台上流式传输“mpeg” UnityEngine.Networking.DownloadHandlerAudioClip:GetContent(UnityWebRequest)
我的代码:
// 这里根据audioURL下载音频 ... WWW data = new 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)
解决方案
Unity 文档中提到音频格式应该是浏览器原生支持的,您可以通过以下链接查看支持状态:
https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats
或者简单地使用音频标签来检查文件。
正如我之前测试过的,ogg 适合 chrome 和 firefox,而 mp3 适合 safari
推荐阅读
- java - 是否有一种简单的方法使用 JPA/Hibernate 在删除父实体时删除子实体而无需定义双向关系?
- c - 如何在 Windows 上交叉编译 C 到 i386?
- html - 定义表行空间
- hibernate - hql 最大时间戳和唯一 ID
- laravel - Clarkeash/Doorman Composer post-autoload-dump 事件返回错误代码 1 Laravel
- format - SheetJS 用逗号格式化数字但不带小数
- c++ - 我的堆栈和库存清单程序的结构有什么问题?
- symfony - 迁移数据库时的 Symfony 5 快速手册错误
- javascript - 太多的重新渲染。React 限制渲染次数以防止无限循环
- azure - Azure 静态 WebApps 部署失败原因:内容分发失败