iOS 上 mediaRecorder 的替代品

Posted

技术标签:

【中文标题】iOS 上 mediaRecorder 的替代品【英文标题】:alternative to mediaRecorder on iOS 【发布时间】:2018-06-27 11:50:43 【问题描述】:

我想将视频流从 ios 设备(版本 11 及更高版本)发送到服务器(从在 iOS 上使用 html5 的客户端)。 对于其他浏览器,我从navigator.getUserMedia 获取流,并使用 mediaRecorder 和 WebSocket 将其传递给服务器:

this.mediaRecorder = new MediaRecorder(this._stream);
this.mediaRecorder.start(50);
this.mediaRecorder.ondataavailable = function(e) 
    app.socket.emit("frameRequest", e.data);

但是,iOS 不支持 MediaRecorder。是否有替代从 iOS 设备发送流的方法?

【问题讨论】:

【参考方案1】:

有一些 polyfill 将 MediaRecorder API 支持添加到原生不支持它的浏览器,包括 iOS Safari。我目前最喜欢的是Opus Media Recorder。

我遇到的一个问题是它只支持以 Ogg 或 Wav 格式录制,但 iOS 不支持播放 Ogg - 仅支持 Wav、AAC 或 MP3。不幸的是,Wav 和 AAC 文件太大了。所以,我采取了在 Wav 中录制并使用 lamejs 在浏览器中转码为 MP3 的方法。

【讨论】:

任何做视频的东西? @Dois 我在想这个,如果理论上视频是从同一个域加载的,理论上可以通过分析原始文件本身的位(也许使用 ffmpeg)从头开始实现视频录制机制。 js

以上是关于iOS 上 mediaRecorder 的替代品的主要内容,如果未能解决你的问题,请参考以下文章

即使匹配视频大小和预览大小纵横比,MediaRecorder 也会失败

MediaRecorder网上示例缺陷

通过MediaRecorder源码学习系统源码定位

通过MediaRecorder源码学习系统源码定位

Safari 14.1.2 - 找不到变量:MediaRecorder

MediaRecorder.AudioSource中VOICE_CALL和VOICE_COMMUNICATION之间的区别