需要用户交互才能播放音频解决方法?

时间:2018-12-26 04:43:42

标签: javascript audio xmlhttprequest html5-audio javascript-audio-api

当前,我正在开发html5 / js音乐播放器应用程序。我在移动设备上有很多用户在播放音乐时遇到问题。根据许多网站的介绍,您需要先与用户互动,然后才能播放音频。

目前,这就是我对音乐播放器进行编程的方式。 我已经使用onclick属性来检测播放按钮上的点击/点击。

<button onclick = "playaudio('song name');">Play</button>

然后我有js代码来解析播放网址。

var http = new XMLHttpRequest();
var url = '/getsong';
var params = 'name='+songname;
http.open('POST', url, true);


http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
    var snd=document.getElementsByTagName("audio")[0];
    snd.src = http.responseText;
    snd.load();
    snd.play();
    }
}
http.send(params);

这在计算机上工作正常,但在移动用户上,必须单击“暂停/播放”按钮才能开始播放音乐。用户交互需求是否有任何解决方法,因为我想实现一个像Google Cast / Spotify Connect这样的远程播放系统。

当前我无法访问完整的代码,因此这只是音乐播放器的核心部分。

我还需要创建一个播放列表功能,但是由于这个原因,如果没有用户交互,播放播放列表中的下一首曲目似乎是不可能的。

1 个答案:

答案 0 :(得分:0)

以前的问题是,某些移动浏览器不允许音频自动播放,您可以实施,有几种解决方法。

Audio Tag Autoplay Not working in mobile

是的,对于播放器,您可以选择一个开源HTML5播放器Amplitude.js,该播放器支持播放列表以及下一首歌曲,而无需用户基于播放列表进行交互,您可以在其网站上查看演示

https://521dimensions.com/open-source/amplitudejs

请参阅其GitHub上的代码:

https://github.com/521dimensions/amplitudejs