在Firefox Mac上通过HTML5播放mp3文件,替代方案

时间:2013-08-08 16:04:43

标签: firefox mp3 html5-audio

我需要播放一个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网址放在网址栏中,这是否正常?

因此,如果您确认这是正常行为,您能否告诉我哪些是替代方案? 1)闪回落? 2)在运行中将mp3转换为oog(由firefox支持)?

你能解释一下如何实现它们吗?

感谢。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

调查一下。 https://github.com/nddrylliog/jsmad#readme

它在飞行中隐蔽它。

答案 2 :(得分: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;
}

More info on canPlayType and codecs.

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

Flash备选方案可行(上面提到的SoundManager2很好),并且可以使用FFMPEG等服务器进行代码转换,具体取决于您的服务器。