gpt4 book ai didi

javascript - 如何使用 javascript 立即清晰地播放音频而没有任何延迟?

转载 作者:行者123 更新时间:2023-12-02 22:33:07 25 4
gpt4 key购买 nike

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

The wav sound before deleting the lag

我对声音之前的滞后不感兴趣,因为我希望用户在按下按钮后立即听到声音。因此,我删除了 audacity 中拍手前的滞后,如下所示。

After removing the lag in front of the clap

声音再次保存为wav格式,在audacious和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();
});

最佳答案

您需要将音频对象的预加载属性设置为“自动”:

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

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

关于javascript - 如何使用 javascript 立即清晰地播放音频而没有任何延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31773344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com