JavaScript音频播放延迟
我正在用JavaScript编写一个非常简单的游戏,我注意到从调用“play”函数到音频开始播放大约有0.5秒的延迟。这正常吗 这是我的代码:JavaScript音频播放延迟,javascript,audio,web,Javascript,Audio,Web,我正在用JavaScript编写一个非常简单的游戏,我注意到从调用“play”函数到音频开始播放大约有0.5秒的延迟。这正常吗 这是我的代码: var audio = new Audio("games/aventura4/sfx/hit.wav"); audio.play(); 我还尝试过只初始化音频变量一次,然后调用audio.play()(当然,在执行audio.currentTime=0之后),延迟仍然存在 我做错什么了吗?(顺便说一句,我正在Safari上试用这个) 编辑:在尝试了这个
var audio = new Audio("games/aventura4/sfx/hit.wav");
audio.play();
我还尝试过只初始化音频变量一次,然后调用audio.play()(当然,在执行audio.currentTime=0之后),延迟仍然存在
我做错什么了吗?(顺便说一句,我正在Safari上试用这个)
编辑:在尝试了这个之后,问题似乎只是在Safari上运行这个。在Chrome上没有延迟。但这仍然留下了一个问题,为什么它会发生在狩猎中
编辑2:似乎这可能与另一个问题有关:当您点击“播放”按钮(无论是手动还是代码播放)时,会发出网络请求以获取音频。虽然它可以在下载完整文件之前启动,但它需要在启动之前将合理数量的文件下载到缓冲区中,否则它在尝试播放时会严重口吃
您可以向浏览器提示您希望音频预加载:
<audio preload="auto">
但这只是一个暗示,不能保证任何事情。如果你过度使用这个属性,可能会适得其反
使用JavaScript解决方案,您可以更早地实例化音频。有一个oncanplaythrough
事件,当其缓冲足够播放时触发。当您点击“播放”按钮(无论是手动还是以代码方式)时,将发出网络请求以获取音频。虽然它可以在下载完整文件之前启动,但它需要在启动之前将合理数量的文件下载到缓冲区中,否则它在尝试播放时会严重口吃
您可以向浏览器提示您希望音频预加载:
<audio preload="auto">
但这只是一个暗示,不能保证任何事情。如果你过度使用这个属性,可能会适得其反
使用JavaScript解决方案,您可以更早地实例化音频。有一个
oncanplaythrough
事件,当它有足够的缓冲来播放时触发。我没有经历过这种情况,但我的结构有点不同。在我的html文件中,我有一个音频标记:
<audio id="hitSound" src="games/aventura4/sfx/hit.wav""></audio>
当我想播放声音时,调用该函数。对我来说没有任何延迟。我没有这种经历,但我的结构有点不同。在我的html文件中,我有一个音频标记:
<audio id="hitSound" src="games/aventura4/sfx/hit.wav""></audio>
当我想播放声音时,调用该函数。对我来说没有任何类型的延迟。通过请求获取文件会有延迟&等待获取文件完成。。。。一种解决方法是通过调用ajax在页面加载上调用.wav文件。。。缓存该响应
$.ajax({
url: 'games/aventura4/sfx/hit.wav',
cache: true,
success: function( data ) {
$('audio #source').attr('src', data); //store it in some ID
}
使用#source to.play()。。。。一种解决方法是通过调用ajax在页面加载上调用.wav文件。。。缓存该响应
$.ajax({
url: 'games/aventura4/sfx/hit.wav',
cache: true,
success: function( data ) {
$('audio #source').attr('src', data); //store it in some ID
}
使用#source to.play()我不确定,但这可能是因为缓冲…检查您的网络选项卡,查看wav文件何时下载。。。从服务器获取它可能需要一些时间。。尝试在页面加载上获取它。这不是网络,我正在本地硬盘上运行。我不确定,但这可能是因为缓冲…检查您的“网络”选项卡,查看wav文件何时下载。。。从服务器获取它可能需要一些时间。。尝试在页面加载上获取它。这不是网络,我正在本地硬盘上运行。谢谢!我试过了,但我看到了同样的延迟。经过一些实验后,我认为问题在于狩猎!这一切在Chrome中都可以毫不延迟地工作…谢谢!我试过了,但我看到了同样的延迟。经过一些实验后,我认为问题在于狩猎!这一切在Chrome中都可以毫不延迟地工作…谢谢!我试过了,但我看到了同样的延迟。经过一些实验后,我认为问题在于狩猎!这一切在Chrome中都可以毫不延迟地工作…谢谢!我试过了,但我看到了同样的延迟。经过一些实验后,我认为问题在于狩猎!这一切在Chrome中都可以毫不延迟地工作…谢谢!我不想使用任何不是Javascript或HTML的东西。从未使用过ajax,因此,我现在宁愿远离它:)谢谢!我不想使用任何不是Javascript或HTML的东西。从未使用过ajax,因此,我现在宁愿远离它:)