Hag*_*sko 5 javascript audio html5 mp3 media-source
我正在研究在没有插件的浏览器中实现自适应和渐进式音频流。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;
}
}
Run Code Online (Sandbox Code Playgroud)
调用addSourceBuffer时收到NotSupportedError异常。
Firefox不支持mp3吗?从MDN支持的格式列表中(https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats),这意味着如果操作系统支持mp3支持,那么-我正在测试的操作系统(OSX)确实支持。
任何帮助表示赞赏!
好的,因此我能够在从事Media Source Extension的Mozilla工程师的帮助下弄清楚。
关于MSE(媒体源扩展)的第一件事要注意的是,它不一定支持浏览器的音频元素支持的所有媒体格式。为了说明这一点,尽管Firefox在直接输入到浏览器或直接输入到Audio元素时将播放mp3文件,但如果将其输入到媒体源缓冲区中,它将无法播放相同的mp3文件。
现在,Firefox的MSE实施实际上支持哪种媒体格式?答案是从Firefox 42开始,默认情况下仅支持fMP4(分段MP4)。还支持webm,但默认情况下不支持,您的用户将必须通过Firefox的about:config页面手动将其打开。创建新缓冲区时用于馈送媒体源对象的fMP4 mimeType是:audio / mp4; codecs =“ mp4a.40.2”
而且,如果您想知道到底什么是fMP4,它是MPEG-4标准的一部分,更具体地说是第12部分的标准:“使用非多路复用音频/视频的ISO基本媒体文件格式(ISOBMFF)”。如果您对更多详细信息感兴趣,请查找它。
根据我的经验,fMP4在所有主流浏览器和操作系统上均受支持-这使fMP4成为自适应和渐进式流媒体的理想格式候选。
HTH!
我在 Linux 上使用 FF42,并且与我在 MDN 上阅读文档时所相信的相反,默认情况下未启用 MediaSource API。
您是否尝试过进入 about:config 并调整处理 MediaSource API 支持的编解码器的参数?我有 MP4 和 webm 的开关。不确定它对 MP3 有帮助,但可能值得一试。