声音无法在手机中播放

时间:2013-07-26 19:19:29

标签: javascript html html5-audio

我在HTML页面中使用了声音并编写了一个JavaScript函数,以便在特定时间播放它。问题是,当我在PC中加载页面时,它运行良好,但在移动设备上,声音无法播放。有什么问题?

<audio id="buzzer" controls="controls">
<source src="assets/sound/buzzer.mp3" type="audio/mpeg" />
function PlaySound1() {
    var audioElement = document.getElementById('buzzer');
    audioElement.setAttribute("preload", "auto");
    audioElement.autobuffer = true;

    var source1 = document.createElement('source');
    source1.type= 'audio/mpeg';
    source1.src= 'buzzer.mp3';
    audioElement.appendChild(source1);

    audioElement.load();
    audioElement.play();
};

4 个答案:

答案 0 :(得分:1)

大多数移动浏览器需要直接的物理交互来开始音频播放。这意味着您无法在页面加载或任何异步函数(如setTimeout)中触发初始播放。

答案 1 :(得分:0)

您可以试用UbaPlayer,它为旧浏览器提供Flash备用。

支持表(来自HTML5 Doctor: HTML5 Audio – The State of Play

Mobile Browser                              Version         Codec Support
Opera Mobile                                11.0+           Device-dependent
Android                                     2.3+            Device-dependent
Mobile Safari (iPhone, iPad, iPod Touch)    iOS 3.0+        MP3, AAC
Blackberry                                  6.0+            MP3, AAC

答案 2 :(得分:0)

您是否查看了浏览器支持表http://www.w3schools.com/html/html5_audio.asp

答案 3 :(得分:0)

您的代码没有错。默认情况下,移动浏览器不会自动播放声音,因为浏览器创建者不希望这些声音被网站利用。我几乎也放弃了,因为我在网上找不到任何东西。

大约8个月后,我从iPhone切换到Android,发现Chrome和Firefox都在其浏览器中具有权限选项,以允许某个网站播放声音。

目前在iOS中,Safari和Chrome浏览器都看不到这样的选项。

我已附上了Android Chrome浏览器设置中的图片: after clicking on the lock of the address bar the hidden permissions settings