2017-09-23 95 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)協議設置流媒體。