1

使用新的 HTML 音频标签:

<audio autoplay="autoplay">
<source src="../../audio/andromeda_oars.ogg" type="audio/ogg" />
<source src="../../audio/andromeda_oars.mp3" type="audio/mpeg" />   
Your browser does not support the audio element.
</audio>

这适用于我尝试过的所有浏览器(IE v10、Chrome v23、Opera v12 和 Firefox v17)。但是,当我在 Kindle Fire HD 中查看相同的页面时,两个音频文件(ogg 和 mp3)都会播放——一个接一个(这让我发疯)。这不应该发生。有人有任何答案和/或建议吗?谢谢!节日快乐....

4

2 回答 2

0

我在 FireHD7 中尝试了以下 HTML,它工作正常 - 只播放一个音频标签。如果您仍然有问题,您使用的是什么版本的 Silk 浏览器,它是在 HD7 还是 HD8.9 设备上?

<html lang="">
<head>
<meta http-equiv="content-type" content="text/html; charset=">
<title>Audio Test</title>
</head>
<body>

<audio id=audio0 controls autoplay="true">
<source src='http://www.russianlessons.net/audio/lesson3-20.mp3' type='audio/mpeg'>
<source src='http://www.russianlessons.net/audio/lesson3-20.ogg' type='audio/ogg'>
</audio>

</body>
</html>
于 2013-01-14T19:39:57.487 回答
0

这听起来像是 Kindle Fire 浏览器中的一个错误。如果可以播放第一个源文件,则应忽略第二个源文件。

可能值得改变源元素的顺序(即把 MP3 放在第一位)。我怀疑它会有所作为,但以防万一 - 可能是一些奇怪的浏览器怪癖。

另一种可能性是浏览器的自动播放实现存在错误。您是否尝试过删除该autoplay属性?如果这是问题所在,那么您可以尝试play()在页面加载时使用 JavaScript 的方法。

更可靠的解决方案是使用 JavaScript 检测编解码器支持。像这样的东西应该工作:

HTML:

<audio id="myAudio">
Your browser does not support the audio element.
</audio>

JavaScript:

function getAudioType(element) {
    if (element.canPlayType) {
        // CanPlayType returns maybe, probably, or an empty string.
        if (element.canPlayType('audio/ogg; codecs="vorbis"') !== '') {
            return('ogg');
        } else if (element.canPlayType('audio/mpeg;') !== '') {
            return('mp3');
        }
    }
    return false;
}

var audio = document.getElementById('myAudio');
var audiotype = getAudioType(audio);
if (!audiotype) {
    // Some fallback or not-supported message here
} else {
    audio.src = '../../audio/andromeda_oars.' + audiotype;
    audio.play();
}

更新: 这个例子

于 2012-12-26T08:49:58.067 回答