繁体   English   中英

如何立即使用javascript清晰,无延迟地播放音频?

[英]How to instantly play an audio clearly using javascript without any lag?

我正在开发一个基于Javascript的应用程序,每当用户单击一个按钮时,我都会使用拍手声。 用户单击按钮后必须立即播放声音(不应有滞后)。 我使用audacity录制了声音并将其保存为wav格式。 最初,拍手声音之前有一个滞后,单击按钮时我可以清晰地听到声音,但是有点晚了,因为如我所说,声音之前存在滞后(您可以在下图中看到)。

删除滞后之前的wav声音

我对声音之前的延迟不感兴趣,因为我希望用户在按下按钮后立即听到声音。 因此,如下所示,我以大胆的方式消除了拍手前面的滞后。

消除拍手前面的滞后后

声音再次以wav格式保存,以大胆和winamp播放时,我可以清晰听到声音。 但是,当我在浏览器中打开应用程序中的按钮时,它的拍手声变得非常柔和,好像我根本听不到。 我真的很困惑,因为我不确定问题是否与文件格式或javascript有关。 使用javascript单击按钮后,有没有办法清晰播放声音?

[更新部分]

真的对不起。 我的代码中有一个错误。 我将音频的初始时间设置为0.05,这导致了问题。

tapSound.currentTime=0.05;
tapSound.play();

现在,我可以清晰地听到声音了,但是每次单击按钮之前,声音仍然存在延迟。

这是我拥有的javascript代码

var tapSound=new Audio();
tapSound.src="sounds/tap.wav";
tapSound.preload='auto';
$(".refresh, .backspace, .home, .pause, .about, .backbutton").on('click',function () {
tapSound.currentTime=0.01;
tapSound.play();
});

您需要将Audio对象的preload属性设置为'auto':

var audio = new Audio();
audio.src = "yourfile";
audio.preload = 'auto';

此代码必须在加载页面时执行,而不是在单击按钮时执行。 单击按钮时,只需调用音频对象的play()方法即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM