我正在考虑在没有插件的情况下在浏览器中实现自适应和渐进式音频流。 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) 确实支持它。
感谢任何帮助!
最佳答案
好吧,在从事 Media Source Extension 的 Mozilla 工程师的热心帮助下,我得以解决这个问题。
关于 MSE(媒体源扩展)要注意的第一件事是它不一定支持浏览器音频元素支持的所有媒体格式。为了说明这一点,虽然 Firefox 会在直接提供给浏览器或直接提供给音频元素时播放 mp3 文件,但如果将其提供给媒体源缓冲区,它不会播放相同的 mp3 文件。
现在,Firefox 的 MSE 实现实际上支持哪些媒体格式?答案是从 Firefox 42 开始,默认只支持 fMP4(Fragmented MP4)。也支持 webm,但默认情况下不支持,您的用户必须通过 Firefox 的 about:config 页面手动打开它。创建新缓冲区时用于提供媒体源对象的 fMP4 mimeType 是:audio/mp4;编解码器="mp4a.40.2"
如果您想知道 fMP4 到底是什么,它是 MPEG-4 标准的一部分,更具体地说是第 12 部分:“使用非多路复用音频/视频的 ISO 基本媒体文件格式 (ISOBMFF) ”。如果您对更多详细信息感兴趣,请查找它。
根据我的经验,所有主要浏览器和操作系统都支持 fMP4 - 这使得 fMP4 成为自适应和渐进式流式传输的良好候选格式。
喂!
关于javascript - Firefox MediaSource 扩展上的 mp3 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788730/