FF 可以播放 mp3,但不能使用 javascript Audio API

Posted

技术标签:

【中文标题】FF 可以播放 mp3,但不能使用 javascript Audio API【英文标题】:FF can play mp3, but not using the javascript Audio API 【发布时间】:2013-09-16 18:54:05 【问题描述】:

我有这个播放 mp3 文件的 javascript 音频播放器。在 FF v23.0.1 (Mac) 上它不起作用(原因解释为 everywhere 和 here) 我不明白的是,如果我将 URL 直接指向 mp3 文件,FF 会显示它自己的播放器并且歌曲播放得很好。但是当使用 javascript Audio API 时

var audio = new Audio('/my-song.mp3') ; // --> HTTP “Content-Type” van “audio/mpeg” not supported
audio.autoplay = true ;

它不起作用。有人可以向我解释这是为什么吗?

谢谢

【问题讨论】:

贴一些代码,或者它没有发生。请注意,您必须 a) 使用正确的 MIME 类型,并且 b) 必须遵循相同的来源或实施 CORS。 上面的代码给了我FF中的错误。源文件和 mp3 来自同一个域 (localhost)。响应标头指出 Content-Type 是“audio/mpeg”。我认为这是正确的 而您实际上是通过设置autoplay 属性和/或在接收到canplay 事件时调用.play() 来开始游戏的?另外“给我错误”是什么意思?错误信息是什么? PS:new Audio() 实际上只会创建一个 htmlAudioElement aka。 <audio>。您可以将其用作任何其他 DOM 元素。 你有它,那么。您构建的实际上似乎还不支持 MP3 ;) 直接浏览 .mp3 时显示的播放器可能只是一些处理 Content-Type 的插件,例如 QuickTime、VLC 等...不过,在 <audio> 元素中使用它。 【参考方案1】:

错误是(请注意,我已将其翻译成英文):HTTP “Content-Type” of “audio/mpeg” is not supported。

您的 Firefox 版本似乎还不支持 MP3。

直接浏览.mp3时显示的播放器可能只是一些处理Content-Type的插件,例如QuickTime、VLC等...在<audio>中使用该文件时不会飞不过元素。

请参阅"Media formats supported..." 文章,了解有关平台上的 Firefox 版本支持哪些编解码器的信息。

【讨论】:

以上是关于FF 可以播放 mp3,但不能使用 javascript Audio API的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 不会播放声音,但可以在其他浏览器中使用

使用 C# 开发 MP3 播放器

AVAudioPlayer 无法播放 MP3 文件

多个 mp3 音频无法在 chrome 浏览器中播放

android:ListActivity 无法打开 sdcard mp3 既不能播放 mp3

为啥 SDL_Mixer 不能播放某些 mp3 的音乐?