Abd*_*LAN 11 javascript html5 voice-recording ios
我正在开发一个简单的Web应用程序,它只记录麦克风的声音,但我遇到了一些麻烦.
HTML5录音功能在chrome和firefox桌面或android上运行良好.但是在iPhone甚至Chrome和Firefox上使用移动浏览器时它不起作用.
我尝试了recorder.js,结果没有改变.
是否可以在safari上录制语音,或者它是safari或iOS的缺失功能?
cho*_*sia 11
据我所知,即使在最新的iOS(iOS 10)上,使用HTML5在iOS上录制语音仍然是不可能的.由于iOS上的所有浏览器都限制使用iOS上的Safari使用的UIWebView,因此iOS上的Chrome无法支持任何可用于媒体录制的API.
例如,您使用的recorder.js是基于Media Capture API构建的.如果您查看caniuse.com,您会发现iOS上不支持此API.(另请查看此处的问题).
MediaRecorder API也是一个很有前途的API,但仍然不支持 Apple的浏览器.
查看以下答案以获取更多信息.
1. 使用HTML5从iPhone录制语音
2. 在iOS上录制html5
小智 11
从iOS11开始,Safari现在支持Media Capture API:
Safari 11.0中的新功能 - 摄像头和麦克风访问.
添加了对Media Capture API的支持.增加了网站从用户设备访问摄像头和麦克风流的功能(需要用户权限.)
因此recorder.js现在可以使用了.
2018年5月更新(因为所有过时的信息都很难搞清楚).
我发现这个演示证明它是可能的:https://kaliatech.github.io/web-audio-recording-tests/dist/#/test1
现在可以在iOS11 for Safari上轻松实现!现在支持mediaStream API.然而,mediaRecorder API却不是.这会导致任何现有示例无效.因此,您必须通过将媒体流连接到webkitAudioContext ScriptProcessorNode并在节点的onaudioprocess事件上收集流缓冲区来实现您自己的mediaRecorder功能.然后,您可以收集iOS麦克风的流式音频数据,并根据需要进行操作,最有可能将其合并到wav文件中进行上传/下载.这适用于任何支持Media Stream API的浏览器.
两个问题:
- iOS Safari喜欢释放未在主线程上创建的任何AudioContext(点按),因此您无法在设备媒体访问接受的回调上初始化它.
- 除非输入和输出由于某种原因连接,否则scriptProccessorNode不会触发任何音频处理事件.