1

我需要播放一个 mp3 文件;就像是

var sound = new Audio('http://.......'); snd.play();

在 Windows 上的 Chrome 和 Firefox 中有效,但在 Mac 上的 Firefox 中无效,您能确认这是正常行为吗?

从这里: https ://bugzilla.mozilla.org/show_bug.cgi?id=799318 似乎在 Mac 上刚刚添加了该功能(因此可能当前版本的 Firefox 没有提供它)但是有很多关于的消息,我有点困惑......

如果我只是将 mp3 URL 放在 URL 栏中,这是否正常?

因此,如果您确认这是正常行为,您能告诉我哪些是替代方案吗?1)闪退?2)即时将mp3转换为oog(由firefox支持)?

你能解释一下如何实现这两者吗?

谢谢。

4

3 回答 3

2

是的,这是正常行为。见这里:https ://bugzilla.mozilla.org/show_bug.cgi?id=851290

Flash 后备可能会更容易。我建议使用SoundManager2,因为它会为您提供统一的 API,而不必担心浏览器支持哪些编解码器。

于 2013-08-08T19:23:59.377 回答
0

看看这个。https://github.com/nddrylliog/jsmad#readme

它会即时隐藏它。

于 2013-08-08T23:50:25.817 回答
0

您可以在用于播放音频的 URL 周围使用包装器,因为不同的浏览器支持不同的编解码器。音频对象有一个canPlayType方法,您可以使用该方法(不幸的是,使用更冗长的编解码器名称)来确定浏览器支持的类型。有了这个,您可以创建一个接受 URL 路径并修改扩展的函数。

// If you wanted to provide only ogg and mp3:
function getSoundURL (url) {
  var audio = document.createElement('audio');
  if (!audio.canPlayType) return null;
  if (audio.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/, ''))
    return url + '.ogg';
  if (audio.canPlayType('audio/mpeg;').replace(/no/, ''))
    return url + '.ogg';
  return null;
}

有关 canPlayType 和编解码器的更多信息。

还有一些工具可以轻松检测支持的类型,其中一个是我经常用于音频项目的Allen 。免责声明:我做到了:p

Flash 替代方案可以工作(上面提到的 SoundManager2 很好),并且可以在服务器上进行转码,例如 FFMPEG,具体取决于您的服务器。

于 2013-08-09T00:38:35.333 回答