2017-09-23 71 views
1

我使用JavaScript来打一短声在我的应用程序:PhoneGap的音频滞后

var audio = new Audio('sound.mp3'); 
audio.play(); 

当上面的代码被调用时,整个应用程序得到一个滞后/延迟。大约200-500ms后,应用程序会继续正常播放声音。在播放声音2-3次之后,它似乎已经被缓存了或者什么,因为那样它的工作原理应该没有滞后。

在iOS的PhoneGap应用程序中测试时会出现这种情况。在Chrome桌面上运行,效果很好。

+0

也许您正在测试的手机速度很慢? – PHPglue

回答

0

您可能会考虑在启动应用程序时加载声音并将其保存在缓存中。然后,在需要时播放它。这应该减少一圈或甚至省略它。

+0

谢谢。我还没有找到一个很好的解决方案来将声音加载到缓存,所以我可以尝试,你知道吗? – Rasmus

+1

这个插件可能非常有用:https://github.com/floatinghotpot/cordova-plugin-nativeaudio –

0

基本上,200-500毫秒的延迟不是一个错误或性能问题,它是检测可能的双击的必要功能。

的解决方案,以摆脱延迟的是:

1)要使用触摸事件,而不是点击事件的组合,或者

2)Touse fastClick如果你没有jQuery Mobile的。

3)如果fastclick不起作用,使用此:

 $('yourElement').on('touchstart', function (startEvent) {}); 
+0

我已经使用fastclick和touchstart。这不仅仅发生在touchstart上,当音频播放时没有任何接触也会发生滞后。 – Rasmus

+1

这可能是App缓存的问题。试着玩这个。这可能有帮助。 –

+0

我认为灵魂就是你说的。在播放之前,声音需要被分开。第一次加载声音是造成滞后的原因。 – Rasmus

0

由于这是一个MP3连接设备需要播放前先下载文件,因此滞后。如果你想播放音乐没有滞后,你需要流媒体。

Wowza服务器允许您使用m3u8(HLS)协议设置流媒体。