mediaRecorder:在Safari、Chrome和Firefox上运行需要使用哪种MIME类型?

9

我正在尝试使用mediaRecorder API并使其在大多数浏览器上运行。

video/webm;codecs=vp8,opus:在Chrome和Firefox上运行良好...但在Safari上无法正常工作。

video/mp4;codecs:h264:在Safari和Chrome上工作...但在Firefox上不起作用。

看起来Safari现在可以播放webm格式。

要使其在这三个浏览器上运行,应该使用什么mime类型?


“运行”是什么意思?您想在所有平台上播放记录的视频吗?还是只想使用相同的设置进行“录制”?如果是后者,为什么? - Kaiido
实现录制和播放,无需使用ffmpeg进行转码。 - yarek
4个回答

6

我一直在尝试做同样的事情,但最痛苦的是结果无法在所有浏览器上播放。

我能够使用MediaRecorder在Chrome、Firefox、Edge和Safari中录制视频。但是,所得到的视频并不能在所有浏览器上播放。

Safari - 录制为mp4格式,可以在所有浏览器上播放mp4格式的视频。

Chrome 和 Edge - 我使用 mimeType: "video/webm;codecs=vp9"进行录制,可以在Chrome、Firefox和Edge上播放,但在Safari上无法播放。

Firefox - 我使用默认设置,可以在Chrome、Firefox和Edge上播放,但在Safari上无法播放。

据说Safari通过macOS Big Sur 11.3已支持webm视频,我需要升级才能测试这个功能。

不幸的是,iOS仍然不支持webm,因此我正在考虑使用Cloudconvert API将webm视频转换为mp4格式,然后存储在S3中。

欢迎提出其他建议。


2
作为一个简单的答案,我发现这并不是那么容易。使用像下面这样的库来记录mp3。它不受浏览器MediaRecorder本地支持,但库使编码为mp3变得容易。
然后你就有了一个可以在任何浏览器甚至移动设备(如iOS)中播放的blob或文件。

https://github.com/closeio/mic-recorder-to-mp3


2

您需要使用MediaRecorder.isMediaTypeSupported API来了解您正在使用的浏览器支持什么。有关详细信息,请参见此开放PR

但这对播放没有帮助。


1

你陷入了一场电子政治食品争斗。

不幸的是,浏览器之间没有编解码器的共性。你将无法找到一个通用的编解码器。苹果(Safari)坚定地处于H.264 / AAC世界,也就是MP4的世界。

Chrome支持H.264(带有专利负担),但开源的Chromium却不支持。Firefox通过从OpenH264.org自动安装的插件支持,但它只支持H.264的受限基线版本,而不支持更高级的版本。使用MIME类型video/webm; codecs="avc1.42E01F",在Firefox和Chrome中都可以正常播放。

微软新版Edge支持与Chrome相同的内容。

WebRTC被设计成允许端点彼此协商编解码器。在我看来,这是一种笨拙的方式来修补这场电子政治争吵。

这不是一个好的情况。但这是Q1CY2021的现实。


听起来很有道理。看起来Safari是video/mp4;codecs:h264,而其他的则是video/webm。我真正不明白的是,Safari宣布他现在处理webm,而我使用的是最新版本的Safari。 - yarek
Safari 只能在 WebRTC 上下文中处理 WebM,实际上它无法播放 WebM。 - Doug Sillars
抱歉,但在Firefox 89(Linux或Windows)上,“video/webm; codecs =“ avc1.42E01F”根本无法使用。 - Florent Thiery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接