【问题标题】:How to instantly play an audio clearly using javascript without any lag?如何使用 javascript 立即清晰地播放音频而没有任何延迟?
【发布时间】:2015-08-02 15:21:13
【问题描述】:

我正在开发一个基于 Javascript 的应用程序,在该应用程序中,每当用户单击按钮时,我都会使用鼓掌声。用户单击按钮后必须立即播放声音(应该没有延迟)。我使用 audacity 录制了声音并将其保存为 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();
});

【问题讨论】:

  • 你能展示你试过的代码吗?
  • 我不知道答案,但你可以用javascript播放声音。
  • @dman2306 这确实是一个有数千行的大型脚本。基本上我所做的是var clap=new Audio(); clap.src="sounds/clap.wav"; 和我使用的点击功能clap.play();

标签: javascript html audio file-format audacity


【解决方案1】:

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

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

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

【讨论】:

  • 问题与加载时间无关。当我第一次按下按钮时,音频将被加载和缓存。但是同样的问题在进一步点击时仍然存在,这证明问题与加载无关。
  • 所以请在您的帖子中包含代码,以便我们更好地帮助您。
  • 正如我所提到的,脚本文件将近 1000 行。音频部分包括您在回答中提到的内容。音频正在播放,我能听到,但声音很轻。
  • 现在声音很清晰,但是在点击按钮后播放声音需要一点时间。
  • 您还应该在多个浏览器中测试您的代码,以查看此延迟是否是特定于浏览器的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2019-06-02
  • 1970-01-01
相关资源
最近更新 更多