Firefox4<;音频>;不';如果只提供MP3源,则不显示回退内容

Firefox4<;音频>;不';如果只提供MP3源,则不显示回退内容,firefox,html,firefox4,Firefox,Html,Firefox4,这是我的密码: <audio controls preload="auto"> <source src="audio/batcat.mp3" /> Your browser doesn't play MP3s. <a href="audio/batcat.mp3">Download the audio instead.</a> </audio> 在Chrome&

这是我的密码:

<audio controls preload="auto">
   <source src="audio/batcat.mp3" />
   Your browser doesn't play MP3s. <a href="audio/batcat.mp3">Download the audio instead.</a>
</audio>

在Chrome&IE9中,浏览器显示本机音频播放器

在Firefox中,我希望它显示回退文本和链接。相反,它显示了一个丑陋的灰色盒子,中间有X,没有显示后退内容。

这是Firefox的bug,还是我做错了什么

浏览器制造商是否真的说包含所有可能的格式,或者根本不使用该元素。这似乎有点苛刻

编辑
上述问题的答案显然是“是”。我能说的就是:(

Firefox确实应该像你说的那样返回到音频文件的链接。它会浏览源代码列表,如果找不到可以播放的源代码,它应该继续

也许可以尝试在源代码声明中添加类型aa属性,以帮助浏览器决定无法播放它

<source src="audio/batcat.mp3" type="audio/mp3">

另外,如果您有一个示例页面,这样我们就可以看到它的运行(或不视情况而定!),这将很有帮助

编辑 我自己测试过,你说的没错,它根本不工作。真奇怪,我本以为它会工作的。让它工作的唯一方法是添加一个可以播放的OGG文件源


我建议您使用Modernizer之类的东西来决定是否使用。

您是对的。这是因为每个浏览器都支持不同的“编解码器”。最初,HTML5将有一个编解码器,但浏览器供应商无法就哪一个编解码器达成一致(专利限制vs.开源),因此该要求被取消

例如,对于视频,IE和Safari支持H264(MP4)、Chrome、FF和Opera WebM/Ogg。 为了确保它在所有浏览器中都能工作,您可以提供多个源元素并对视频进行三次编码。Mp4优先,WebM或Ogg优先(支持视频的浏览器将尝试每个源元素,直到找到可以播放的源元素。注:目前iPad上存在一个“bug”,它只能播放第一个源元素)


你甚至可以为你的回退嵌入Flash对象,这样你的视频也可以在旧版本的IE中工作(视频也是如此!如果你只嵌入MP4文件,Firefox不会跳转到回退,而是会呈现灰色的“我不能播放此格式”框。你必须使用JavaScript来检测浏览器能够播放哪些编解码器


好吧,我想我可能误解了应该发生的事情,因为Opera(另一款无MP3浏览器)正在做同样的事情。只有当浏览器不支持音频标记时,才会显示回退内容。如果它不支持源文件中的格式,则这是一个完全不同的问题。有人找到了一种简单的方法吗?即,如果支持MP3,则显示播放器。如果只支持OGG,则显示一些回退内容(MP3文件的链接).谢谢!这和我说的差不多,只是没有那么详细。彼得-澄清一下,你是说这是预期的行为,不是Firefox中的bug?例如,在上面的第一个示例中,如果你删除了.ogv源代码,你不会期望看到Flash回退。这取决于未知元素的常规浏览器行为(如果文本、链接(或上例中的Flash)列在结束元素之前,则显示为回退),但在这种情况下,浏览器支持视频/音频元素,而不是您指定的编解码器。如果在这种情况下,它可以返回到常规的回退内容,您是对的,但现在您必须围绕这一点编写脚本。下面是另一篇关于此的文章,使用video.js:谢谢Ian,我正在使用Modernizer,但我不知道它是checked媒体格式支持。你知道这种行为是否与规范一致吗?当你在标记中写入mime类型时,不得不用JS检测到它,这似乎是一种耻辱。这似乎是浏览器应该能够自行解决的问题。你知道这是否是已知的FF错误吗?
<!—Multiple videos with alternate Flash content-->
<video controls>
 <source src="rocpoc.mp4">
 <source src="rocpoc.ogv"> 
    <object data="videoplayer.swf" type="application/x-shockwave-flash">  
      <param name="movie" value="rocpoc.swf"/>  
    </object>  
    A movie by Rocky Lubbers
</video>
//Checking for browser support
//canPlayType returns null, maybe, or probably (the best)
//You can check if they are supported in navigator.plugins

var support = videoElement.canPlayType('video/some-format;codecs="some-codec"');