在线时音频播放不佳

Posted

技术标签:

【中文标题】在线时音频播放不佳【英文标题】:Audio Playing Badly when Online 【发布时间】:2014-07-10 14:15:50 【问题描述】:

我使用 javascript 创建了这个游戏,并使用 Audio 类型播放所有声音(包括效果和背景音乐)。当我从我的计算机上运行该页面时,它运行良好,但在我上传到我的主机并尝试从网络上运行后,它开始听起来非常糟糕:有时它会延迟,有时它根本不播放。

我注意到主要问题与在短时间内多次播放相同的音频有关:每当用户单击页面时它都会播放射击声音,因此通常情况下它不会那么糟糕他们不会向他们的鼠标发送垃圾邮件,但是一旦您开始多次单击,声音就会变得很糟糕。

该特定声音的音频文件非常短,从我的计算机运行时即使用户点击非常快也没有问题。下面是函数的作用:

function play(aux,volume)
    if(volume == undefined)
        volume = 1;
    if(!sound)return;
    aux.volume = globalVolume * aux.customVolume * volume;
    aux.load();
    aux.play();

所以,它所做的几乎就是在调用该函数时再次加载和播放声音。这样做是为了即使在声音仍在播放时调用该函数也会重新开始。

再一次,这一切在我的电脑上运行时运行顺畅,但从网络上运行就很糟糕。

问:有人知道如何解决这个问题吗?或者有谁知道我可以使用的替代方法吗?

也欢迎提出建议。

【问题讨论】:

我“解决”了这个问题,方法是预加载五到六个声音副本,然后有一个指针在它们中前进以逐个播放它们,并避免多次播放相同的音频元素。另外,删除.load(),这会让事情变得更糟。 【参考方案1】:

网络上的音频正在经历很多成长的痛苦,所以您可能想为自己省点麻烦并使用 Howler.js:

https://github.com/goldfire/howler.js

【讨论】:

以上是关于在线时音频播放不佳的主要内容,如果未能解决你的问题,请参考以下文章

ios 如何播放在线的音频文件

React Native Expo 音频 |从最新位置播放直播

使用avplayer播放音频时如何将音频缓存到本地

无法使用惊人的音频引擎播放来自在线链接的音频

如何将 PCM 音频流转换为在线播放

无论如何要在 ipad 上自动播放在线内容音频文件