我正在开发一个简单的网络应用程序,它只能录制麦克风的声音,但我遇到了麻烦。
HTML5录音功能在chrome和firefox桌面或android上运行良好。但是,虽然在iPhone上使用移动浏览器甚至chrome和firefox它都不起作用。
我尝试了recorder.js,结果没有改变。
是否有可能在safari上录制语音,或者它是safari或iOS的缺失函数?
答案 0 :(得分:11)
自iOS11起,Safari现在支持Media Capture API:
Safari 11.0中的新功能 - 摄像头和麦克风访问。
添加了对Media Capture API的支持。 增加了网站访问用户的摄像头和麦克风流的能力 设备(需要用户权限。)
Announcement by Apple - broken link as of Jul 2018
A copy of the announcement on someone's blog
因此,recorder.js现在可以使用了。
答案 1 :(得分:9)
据我所知,即使在最新的iOS(iOS 10)上,使用HTML5在iOS上录制语音仍然是不可能的。由于iOS上的所有浏览器都限制使用iOS上的Safari使用的UIWebView,因此iOS上的Chrome无法支持任何可用于媒体录制的API。
例如,您使用的recorder.js是基于Media Capture API构建的。如果您选中caniuse.com,则会发现iOS不支持此API。 (另请查看问题here)
MediaRecorder API也是一个很有前景的API,但仍然是Apple浏览器的not supported。
查看以下答案以获取更多信息
1. Record voice from IPhone using HTML5
2. Audio Recording html5 on iOS
答案 2 :(得分:8)
2018年5月更新(因为所有过时的信息都很难解决这个问题)。
我发现这个演示证明可以:https://kaliatech.github.io/web-audio-recording-tests/dist/#/test1
答案 3 :(得分:7)
现在可以和"轻松"在iOS11 for Safari上做!现在支持mediaStream API。然而,mediaRecorder API却不是。这会导致任何现有示例无效。因此,您必须通过将媒体流连接到webkitAudioContext ScriptProcessorNode并在节点的onaudioprocess事件上收集流缓冲区来实现您自己的mediaRecorder功能。然后,您可以收集iOS麦克风的流式音频数据,并根据需要进行操作,最有可能将其合并到wav文件中进行上传/下载。这适用于任何支持Media Stream API的浏览器。
两个问题:
- iOS Safari喜欢释放未在主线程上创建的任何AudioContext(点按),因此您无法在设备媒体访问接受的回调中初始化它。
- 除非由于某种原因连接了输入和输出,否则scriptProccessorNode不会触发任何音频处理事件。
答案 4 :(得分:1)
iOS 11上的Safari不支持2种标准,这些标准可以使音频(仅)录制成为可能(并且易于实现):
答案 5 :(得分:0)
我正在使用带有iOS13.3的新iPhone 11 ProMax,并一直试图通过HTML5构建具有语音识别服务的网络应用程序,以便在我的iPhone上的野生动物园或任何浏览器中使用。似乎iOS开发人员已在OS级别阻止了音频/视频录制。但是有一个有限的解决方法,可能对像我一样来这里的人有用。 https://blog.addpipe.com/safari-technology-preview-73-adds-limited-mediastream-recorder-api-support/
基本上,如果您进入野生动物园的高级设置,则可以启用mediaRecorder。他们的演示适用于视频捕获,但我还没有看到纯音频。