我需要播放一个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支持)?
你能解释一下如何实现它们吗?
感谢。
答案 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等服务器进行代码转换,具体取决于您的服务器。