使用Safari和HTML5在iPhone上录制语音

时间:2017-02-14 08:55:34

标签: javascript ios html5 voice-recording

我正在开发一个简单的网络应用程序,它只能录制麦克风的声音,但我遇到了麻烦。

HTML5录音功能在chrome和firefox桌面或android上运行良好。但是,虽然在iPhone上使用移动浏览器甚至chrome和firefox它都不起作用。

我尝试了recorder.js,结果没有改变。

是否有可能在safari上录制语音,或者它是safari或iOS的缺失函数?

6 个答案:

答案 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。 (另请查看问题hereMediaRecorder 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种标准,这些标准可以使音频(仅)录制成为可能(并且易于实现):

    音频的
  • HTML媒体捕获speccorrect syntax) - 应将音频录制内容传递给本地应用,该应用应将结果传回浏览器进行上传(它适用于视频和图片)
  • MediaStream Recording API specdemo) - 允许您直接在浏览器中记录blob。录制可以下载或上传到Web服务器。

答案 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。他们的演示适用于视频捕获,但我还没有看到纯音频。