我正在考虑在浏览器中实现自适应和渐进式音频流,没有插件。 MSE是我正在等待的HTML5 API,在FF 42中可用,但似乎Firefox中的音频格式支持不存在?... 使用MSE API时,mp3音频无效。
以下是代码段:
var mediaSource = new window.MediaSource();
var audioSourceBuffer;
mediaSource.addEventListener('sourceopen', function (e) {
try {
var mimeType = "audio/mpeg";
audioSourceBuffer = mediaSource.addSourceBuffer(mimeType);
} catch (e) {
log('Exception calling addSourceBuffer', e);
return;
}
}
调用addSourceBuffer时出现NotSupportedError异常。
Firefox不支持mp3吗?从MDN支持的格式列表(https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats),它暗示如果操作系统支持它,那么应该支持mp3支持 - 而我正在测试的操作系统(OSX)确实支持它。
任何帮助表示赞赏!
答案 0 :(得分:5)
好的,所以我能够在使用Media Source Extension的Mozilla工程师的帮助下弄明白。
关于MSE(媒体源扩展)的第一个关键事项是,它不一定支持浏览器的音频元素支持的所有媒体格式。为了说明这一点,虽然Firefox会在直接送到浏览器或直接送到音频元素时播放mp3文件,但如果你将它送入媒体源缓冲区,它将不播放相同的mp3文件。
现在,Firefox'实际支持哪种媒体格式MSE实施?答案是,从Firefox 42开始,默认情况下仅支持fMP4(Fragmented MP4)。 webm也受支持,但默认情况下不支持,您的用户必须通过Firefox手动启用它。 about:config page。在创建新缓冲区时,为媒体源对象提供的fMP4 mimeType是:audio / mp4;编解码器=" mp4a.40.2"
如果您想知道fMP4到底是什么,它是MPEG-4标准的一部分标准,更具体地说是第12部分:" ISO基础媒体文件格式(ISOBMFF)使用非 - 多路复用的音频/视频"。如果您对更多细节感兴趣,请查阅。
根据我的经验,所有主流浏览器和操作系统都支持fMP4 - 这使得fMP4成为自适应和渐进式流媒体的良好格式候选者。
HTH!
答案 1 :(得分:0)
我在linux上使用FF42,与我认为阅读MDN文档(https://developer.mozilla.org/fr/docs/Web/API/MediaSource)相反,默认情况下不启用MediaSource API。
你有没有尝试过:配置和调整处理MediaSource API支持的编解码器的参数?我有MP4和webm的开关。不确定它对MP3有用,但值得一试。
答案 2 :(得分:0)
我写了一些东西在javascript中动态地将mp3封装在mp4中,特别是为了让这个东西在firefox中工作。我只需要它用于 128kbps 流,所以这只适用于特定的比特率,没有专辑封面。以防其他人可能会觉得这很有用:https://gist.github.com/fanfare/0fa525af28b275fd6623942d7e9d70dd