0

我正在尝试在所有可能的现代浏览器中播放音频,包括 ios 和 android。

假设我在服务器上有两个版本,我已经编写了一个函数来播放 ogg 或 mp3:

audio_template = Handlebars.compile('<audio autoplay>' +
                                    '   <source src="{{ src }}.mp3">' +
                                    '   <source src="{{ src }}.ogg">' +
                                    '</audio>');

/* No extention--assuming both ogg and mp3 are present. */
function playAudio(src) {
       var audio = new Audio();
       if (audio.canPlayType('audio/mp3') {
           audio.src = src + ".mp3";
       }   
       else {
           audio.src = src + ".ogg";
       }   
       audio.play(); 
}

//plays on desktop browsers, nothing on mobile
function playAudio2(src) {
    $('body').append(audio_template({src:src})); 
}

//plays on desktop browsers, nothing on mobile
function playAudio3(src) {
    var audio = $(audio_template({src:src}));
    audio[0].play(); 
}

这可以在所有桌面浏览器中成功播放,但在 ios safari 或 android chrome 上没有任何效果。我尝试使用 android 平台工具 (adt) 提供的远程调试器,但调用 playAudio 只是返回“未定义”而没有错误。当我在 audio.play() 之前放置断点时,audio.play() 也是如此。

我还尝试将那个把手模板的输出嵌入到我的身体标签的底部并播放它,但这也失败了。

是格式问题吗?还是仅仅是无法播放隐藏音频元素的限制?

4

0 回答 0