Javascript Safari中的Web音频API质量差和其他问题

Javascript Safari中的Web音频API质量差和其他问题,javascript,html,audio,safari,web-audio-api,Javascript,Html,Audio,Safari,Web Audio Api,我正在用HTML和JavaScript构建一个mp3播放器,使用Web音频API来完成我的大学工作。该项目位于以下位置: 在Firefox和Chrome中,一切似乎都运行得很好,但Safari存在一些主要问题。请随意在你的电脑上试一试,看看我说的是什么,但要点是:我在Safari中播放了声音(这是以前没有发生过的,因为使用了一个SteroPanner,而不仅仅是Panner节点),但是与其他两个浏览器相比,播放似乎相当差劲。此外,所有曲目都不会正常静音,使用上滑块跟踪歌曲非常混乱。我发现这相当令

我正在用HTML和JavaScript构建一个mp3播放器,使用Web音频API来完成我的大学工作。该项目位于以下位置:

在Firefox和Chrome中,一切似乎都运行得很好,但Safari存在一些主要问题。请随意在你的电脑上试一试,看看我说的是什么,但要点是:我在Safari中播放了声音(这是以前没有发生过的,因为使用了一个SteroPanner,而不仅仅是Panner节点),但是与其他两个浏览器相比,播放似乎相当差劲。此外,所有曲目都不会正常静音,使用上滑块跟踪歌曲非常混乱。我发现这相当令人困惑,因为静音功能完全基于HTML元素,实际上没有使用Web音频API。我的一个想法是先将音频上传到缓冲区,而不是从HTML5音频元素中获取音频,这是许多教程建议的。我觉得这可能会解决音频播放质量差的问题,尽管我不相信这会有助于解决静音问题

这是我的github回购协议:


有没有其他人遇到过类似这样的奇怪问题,或者有没有人知道我可能遗漏了什么?任何帮助都将不胜感激

对于静音/音量,请在源代码中附加一个增益节点,并使用该节点,而不是使用HTMLMEDIALEMENT的api:

var gainNode = context.createGain();
source.connect(gainNode);

gainNode.gain.value = 1; // full volume
gainNode.gain.value = 0; // muted

是的,将声音文件作为缓冲区加载将在浏览器间更可靠地工作,尽管这意味着要编写更多的代码来控制音频播放

对于静音/音量,请在源代码中附加一个增益节点,并使用该节点,而不是使用HTMLMEDIALEMENT的api:

var gainNode = context.createGain();
source.connect(gainNode);

gainNode.gain.value = 1; // full volume
gainNode.gain.value = 0; // muted

是的,将声音文件作为缓冲区加载将在浏览器间更可靠地工作,尽管这意味着要编写更多的代码来控制音频播放

非常感谢imcg!GainNode只是实现了音量和静音功能。我还没有决定是否要开始将文件加载到缓冲区的任务(看起来需要更多的代码来实现当前以一种非常干净和简单的方式实现的功能),但我真的很欣赏这个链接。绝对是一个伟大的起点!再次感谢!我有几个曲目正在加载,你知道我怎么可以静音一个曲目,而不是所有的曲目吗?谢谢你的imcg!GainNode只是实现了音量和静音功能。我还没有决定是否要开始将文件加载到缓冲区的任务(看起来需要更多的代码来实现当前以一种非常干净和简单的方式实现的功能),但我真的很欣赏这个链接。绝对是一个伟大的起点!再次感谢!我有几首正在加载的曲目,你知道我怎样才能使一首曲目静音而不是所有曲目吗?