【问题标题】:Voice recording on iPhone by using Safari and HTML5使用 Safari 和 HTML5 在 iPhone 上录音
【发布时间】:2017-07-02 11:26:42
【问题描述】:

我正在开发一个简单的网络应用程序,它只记录麦克风的声音,但我遇到了一些问题。

HTML5 录音功能在 chrome 和 firefox 桌面或 android 上运行良好。但是在 iPhone 上使用移动浏览器时,即使 chrome 和 firefox 也无法正常工作。

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

是否可以在 safari 上录制语音或者这是 safari 或 iOS 缺少的功能?

【问题讨论】:

  • @StephenTetreault:作为答案会更好(只要它阐明了该页面上的解释,而不仅仅是链接)。
  • @StephenTetreault:这对我不起作用(已在 iOS 12、Android 9 上测试)- 接受音频/* 并设置了捕获属性只会打开无法录制音频的相机应用程序。

标签: javascript ios html voice-recording


【解决方案1】:

2018 年 5 月更新(因为所有过时的信息都很难弄清楚)。

我发现这个演示证明这是可能的:https://kaliatech.github.io/web-audio-recording-tests/dist/#/test1

【讨论】:

  • 请记住,Apple 仅在移动 safari 中添加了适当的 webrtc 支持。它仍然完全在 chrome/ff/webviews 中完成。苹果半途而废的工作。
  • 这个 github repo 太棒了!比任何打包的解决方案都要好得多。他称这只是“测试”哇
  • 我认为 Apple 成为了新的 Internet Explorer。现在终于微软变得很棒并与Edge一起去了......
【解决方案2】:

据我所知,即使在最新的 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

【讨论】:

  • Safari 是新的 IE。
  • 我不敢相信它仍然不受支持
  • 是否计划支持此功能的任何更新?太乱了,即使在IOS上使用chrome仍然无法使用MediaRecorder API
  • @StephenTetreault 只是 ...lol.. 苹果仍然是新的...苹果
【解决方案3】:

现在可以在 iOS11 for Safari 上“轻松”完成!现在支持 mediaStream API。然而 mediaRecorder API 不是。这会导致任何现有的示例都不起作用。因此,您必须通过将媒体流连接到 webkitAudioContext ScriptProcessorNode 来实现自己的 mediaRecorder 功能,并在节点的 onaudioprocess 事件上收集流缓冲区。然后,您可以收集 iOS 麦克风的流式音频数据并根据需要使用它,很可能将其合并到 wav 文件中以供上传/下载。这适用于任何支持媒体流 API 的浏览器。

两个陷阱:
- iOS Safari 喜欢释放不是在主线程上创建的任何 AudioContext(点击),因此您无法在设备媒体访问接受的回调中对其进行初始化。
- scriptProccessorNode 不会触发任何音频处理事件,除非输入和输出因某种原因连接。

【讨论】:

  • 你能发帖吗&|链接到任何演示这一点的代码?我仍在努力获取非零长度的音频数据。
  • 别忘了还有一个问题:AudioContext 只能在用户交互时创建(即触摸端、点击等)
  • 感谢有关连接输入和输出的提示,这让我抓狂!
【解决方案4】:

自 iOS11 起,Safari 现在支持 Media Capture API:

Safari 11.0 中的新功能 - 摄像头和麦克风访问。

添加了对媒体捕获 API 的支持。 增加了网站从用户访问摄像头和麦克风流的功能 设备(需要用户权限。)

Announcement by Apple - broken link as of Jul 2018

A copy of the announcement on someone's blog

因此 recorder.js 现在可以工作了。

【讨论】:

  • 我尝试在 iOS11 中录制音频,但 recorder.js 不起作用。
  • K48,你在 IOS11 上使用 recorder.js 成功了吗?
  • @visual 很遗憾没有
  • 音频录制和播放确实可以在 IOS/Safari 11 中使用,但只能从浏览器中使用。独立(又名可以保存到主屏幕的网络应用程序)应用程序无法运行,甚至无法被网络检查器识别(这显然是一个错误)
  • 我们无法让麦克风工作。记录器是 iPad Safari 和 Chrome 上的undefined。检查代码并自己尝试:github.com/q2apro/js-snippet-audiorecord-getUserMedia/blob/…
【解决方案5】:

iOS 11 上的 Safari 不支持使(仅)音频录制成为可能(并且易于实现)的 2 个标准:

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

【讨论】:

    【解决方案6】:

    我正在使用带有 iOS13.3 的新 iPhone 11 ProMax,并且一直在尝试通过 HTML5 构建一个带有语音识别服务的网络应用程序,以便在我的 iPhone 上的 safari 或任何浏览器中工作。似乎 iOS 开发人员已经在 os 级别阻止了音频/视频录制。有一个有限的解决方法,但是可能对像我一样来到这里的人有用。 https://blog.addpipe.com/safari-technology-preview-73-adds-limited-mediastream-recorder-api-support/

    基本上,如果您进入 safari 的高级设置,您可以启用 mediaRecorder。他们的演示适用于视频捕获,我还没有看到纯音频。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多