HTML5 中的 Javascript 和音频 - 第一个 'play()' 调用后的延迟

标签 javascript html audio

我对这个非常简单的 HTML5 + Javascript 代码有疑问。它会尝试在加载后直接播放声音。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Test page</title>
    </head>
    <body>

        <audio src="freedom.wav" 
               id="audio1"
               preload='auto' 
               onloadeddata="alert('the sound has been loaded !'); document.getElementById('audio1').play();"
        ></audio>

        <input type="button" value="Play it again !" onclick="document.getElementById('audio1').play();" />

    </body>
</html>

如您所见,我正在加载带有 HTML5 音频标签的声音。声音完全加载后,将启动事件“onloadeddata”并执行 Javascript 代码。此代码提示一个警告窗口并立即开始播放声音。 alert() 调用可以直观地通知我声音已成功加载。

但问题是:play() 调用有效,但声音是在 alert() 窗口出现后的 SECONDS 播放的。这种延迟对我来说是有问题的,因为我希望有一个指示器可以告诉我何时可以立即播放声音。而且似乎“onloadeddata”不符合这些要求。

请注意,一旦第一个 play() 成功,我将不会延迟进一步的 play() 调用。我可以用“再玩一遍!”来验证这一点。 button : 单击按钮后立即播放声音,第一个 play() 已通过。

谁能告诉我第一次调用 play() 时的延迟是否有解决方案?或者有什么方法可以告诉我什么时候可以播放声音?

我在使用谷歌浏览器。

非常感谢!

最佳答案

好的,这个问题实际上已经明确定义了。

  • 这个错误只发生在 chrome 上(Firefox 没有问题)
  • 它只涉及wav文件
  • 这与 Javascript 的 play() 函数无关,我通过直接在 chrome 中打开 wav 文件得到了同样的延迟

我仍然没有找到解决这个延迟的方法,现在我真的不在乎了。我将使用 MP3 或 OGG 文件,这就足够了。

干杯!

关于HTML5 中的 Javascript 和音频 - 第一个 'play()' 调用后的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360591/

相关文章:

javascript - Facebook api 权限范围问题

html - 如何使标题 Logo 可点击?

csv - 来自音频级别的 ffmpeg txt

java - 在Android中录制.wav文件

javascript - 播放音频并突出显示带暂停选项的文本

javascript - 自定义谷歌搜索不返回任何结果

javascript - JS 变量有什么区别 - 带美元符号和不带美元符号?

javascript - jQuery 无法读取未定义的属性 'setAttribute'

javascript - 不能使用 jQuery keycode 来改变元素的 CSS

.net - 两个服务器控件具有相同 ID 时出错