Kindle Fire HD使用HTML5音频标签同时播放Ogg和MP3

Kindle Fire HD使用HTML5音频标签同时播放Ogg和MP3,html,audio,kindle,Html,Audio,Kindle,使用新的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. </au

使用新的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>

您的浏览器不支持音频元素。

这在我尝试过的所有浏览器(即v10、Chrome v23、Opera v12和Firefox v17)中都能正常工作。然而,当我在KindleFireHD中查看相同的页面时,两个音频文件(ogg和mp3)都会一个接一个地播放(这让我抓狂)。这是不应该发生的。有人有任何答案和/或建议吗?谢谢节日快乐……

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

可能值得更改源元素的顺序(即,将MP3放在首位)。我怀疑这会有什么不同,但以防万一——可能是一些奇怪的浏览器怪癖

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

一个更可靠的解决方案是使用JavaScript来检测是否支持编解码器。像这样的方法应该会奏效:

HTML:

更新:

我在FireHD7中尝试了以下HTML,效果很好-只播放一个音频标签。 如果您仍然有问题,您使用的是哪个版本的Silk browser?它是在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>

音频测试

谢谢您的回复。我尝试过切换源顺序——这产生了相同的结果。我需要这个项目的自动播放。我将尝试您的JavaScript音频类型检查,但是直接的HTML5音频标记将是首选方法,并且它在大多数支持HTML5的标准浏览器中都能正常工作。很抱歉,我无法让您的代码正常工作。然而,以下链接中的代码在大多数支持HTML5的标准浏览器中都能完美工作,但在KindleFireHD中却根本不能。。。。在脚本主体中使用:var x=Math.round(Math.random()*2)if(x==0)x=sound1 else if(x==1)x=sound2 else x=sound3 window.onload=x.load();x、 play();奇怪的我已经在我的答案中添加了一个指向此代码工作示例的链接。我在Opera、Firefox和Chrome桌面版、Opera Mobile、Mobile Firefox和默认Android浏览器(2.3)中都能使用它。如果所有其他方法都失败了,我唯一能提供的就是SoundManager 2:Scott Schiller投入了大量的工作,让音频在不同的浏览器和设备上可靠地播放。对于你的需求来说,这可能有些过分,但这可能是唯一的选择。
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();
}
<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>