Opera 是否支持音频 mp3 文件?

Does Opera support audio mp3 files?

根据 w3schools 的 caniuse site, Opera supports audio tag. In accordance with w3schools, mp3 is also supported by Opera. But this code doesn't work. Even the sample,如果删除了 ogg 部分,则不起作用 -

<audio controls>
  <source src="horse.mp3" type="audio/mpeg">
  Your browser does not support the audio element.
</audio>

我已经在 Windows 7 64 位 (WoW64) 至 Spoon.net 上使用 Opera 20.0.1387.77 运行 对其进行了测试。而且,如果不支持,那么我应该如何捕获错误并通知用户?我尝试使用 $("#audio").error.code,但 errornull

当 Opera 转向使用 Webkit 作为渲染引擎时,他们放弃了对原生 mp3(和 H.264)的支持,请参阅此博客 post:https://dev.opera.com/blog/300-million-users-and-move-to-webkit/ - W3Schools 上的信息已过期日期,可能是 webkit 出现之前的日子(PSA:永远不要访问 W3Schools)。

要检查您可以播放什么类型的音频,您可以使用 canPlayType 方法,如下所示:

var a = document.createElement('audio');
return !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));

来源:http://diveintohtml5.info/everything.html

还有很多其他方法可以进行这种检测,您可以在这个问题上看到:How to detect HTML5 audio MP3 support

编辑:这可能是版本问题 - 具体信息很少,但我刚刚安装了最新版本的 Opera(27,OSX),我可以正常播放 Mp3。

Opera 至少宣传支持 mp3、canPlayType("audio/mpeg") returns "probably" 并且上面来自 Bulk 的脚本确实 return 正确,但实际上它不支持它(它默默地失败了)。这是全新的 Windows 7 安装,没有任何编解码器包和最新的 Opera。

测试:

经过运行 this JSFiddle通过在BrowserStack上OS和Opera版本的不同配置,考虑到从Presto到WebKit的切换,我得出了以下兼容性信息。


Opera MP3 兼容性:

列出列表项、版本号、.canPlayType('audio/mpeg;') return 值和实际 success/failure 播放音频文件。

Windows 8 和 8.1:

  • 25-27: "probably", 成功
  • Opera <= 24: "", 失败

Windows 7:

  • Opera 27: "probably", 失败
  • Opera <= 26: "", 失败

Windows 经验值:

  • Opera <= 27: "", 失败

OS X 10.10 和 10.9:

  • Opera 26-27: "probably", 成功
  • Opera <= 25: "", 失败

OS X 10.8 和 10.7:

  • Opera <= 27: "", 失败

OS X 10.6:

  • Opera <= 25: "", 失败

Opera 27 在 Windows 7 returning "probably" 但未能播放是相当不幸的。


结论:

从这些信息来看,似乎 Opera 本身并不包含解码 MP3 音频文件所必需的代码,并且只有在主机 OS 提供兼容库的情况下它才能这样做。 Opera 用户可能拥有播放 MP3 所需的库,但不能保证。