javascript - Firefox MediaSource 扩展上的 mp3 支持

标签 javascript html audio 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;
    }
}

调用 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/

相关文章:

javascript - 如何在 Android 的 React-native 中包含 '.jar' 文件?

JavaScript 未捕获引用错误

Javascript - 交换 div 位置

jquery - 如何使我的 jQuery 幻灯片具有响应性?

javascript - 在 D3 图表的圆内插入文本

javascript - 延迟在新标签页中打开链接

javascript - 以透明方式在另一张新图像上显示一张新图像(CSS 或 JS)

php - 连接式冰播方法-有关找出谁在收听流的想法

python-3.x - librosa.util.exceptions.ParameterError : Invalid shape for monophonic audio: ndim=2, 形状=(1025, 5341)

audio - 当黑莓手机收到通知时播放音频