Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Safari和HTML5在iPhone上进行语音录制_Javascript_Ios_Html_Voice Recording - Fatal编程技术网

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

Javascript 使用Safari和HTML5在iPhone上进行语音录制,javascript,ios,html,voice-recording,Javascript,Ios,Html,Voice Recording,我正在开发一个简单的web应用程序,它只记录来自麦克风的声音,但我遇到了一些问题 HTML5语音录制功能在chrome和firefox桌面或android上运行良好。但在iPhone甚至chrome和firefox上使用移动浏览器时,它都不起作用 我尝试了recorder.js,结果没有改变 是否可以在safari上录制语音,或者这是safari或iOS缺少的功能?据我所知,即使在最新的iOS(iOS 10)上,使用HTML5在iOS上录制语音仍然是不可能的。由于iOS上的所有浏览器都限制使用i

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

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

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


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

据我所知,即使在最新的iOS(iOS 10)上,使用HTML5在iOS上录制语音仍然是不可能的。由于iOS上的所有浏览器都限制使用iOS上Safari也使用的UIWebView,因此iOS上的Chrome无法支持任何可用于媒体录制的API。
例如,您使用的recorder.js是基于媒体捕获API构建的。如果您检查,您会发现iOS上不支持此API。(同时检查问题)。
也是一个很有前途的API,但仍然受到苹果浏览器的欢迎

查看下面的答案以了解更多信息。
1.

2.

自iOS11以来,Safari现在支持媒体捕获API:

Safari 11.0中的新增功能–摄像头和麦克风接入

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


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

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

  • HTML媒体捕获用于音频(,)-音频录制应传递给本机应用程序,本机应用程序应将结果传回浏览器进行上传(适用于视频和图片)
  • MediaStream录制API(,)-允许您直接在浏览器中录制到blob。录音可以下载或上传到web服务器
现在,在iOS11上为Safari做这件事是可能的,而且“很容易”!现在支持mediaStream API。然而,mediaRecorder API并非如此。这导致任何现有的示例都不起作用。因此,您必须通过将媒体流连接到webkitAudioContext ScriptProcessorNode并在节点的onaudioprocess事件上收集流缓冲区来实现自己的mediaRecorder功能。然后,您可以收集iOS麦克风的流式音频数据,并根据需要进行处理,最有可能的是将其合并为wav文件以供上传/下载。这适用于任何支持媒体流API的浏览器

两个问题:
-iOS Safari喜欢取消分配任何未在主线程(点击)上创建的音频上下文,因此您无法在设备媒体访问接受回调上初始化它。
-ScriptProcessorNode不会触发任何音频处理事件,除非输入和输出因某种原因连接。

2018年5月更新(因为对于所有过时的信息来说,解决这个问题一直很困难)


我发现这个演示证明了这是可能的:

我正在使用新的iPhone 11 ProMax和iOS13.3,并且一直在尝试通过HTML5构建一个带有语音识别服务的web应用程序,以便在safari或iPhone上的任何浏览器中工作。似乎iOS开发人员已经在操作系统级别阻止了音频/视频录制。有一个有限的解决办法,但可能是有用的人来这里,因为我做了。



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

Safari是新的IE。我不敢相信它仍然不支持任何关于它是否计划支持的更新?这真是一团糟,即使在IOS上使用chrome,也无法使用MediaRecorderAPI@StephenTetreault只是……哈哈。。苹果仍然是新的。。。应用这种方法@Stephentreault:作为一个答案会更好(只要它能清楚地说明页面上的解释,而不仅仅是链接)。@Stephentreault:这对我不起作用(用iOS 12、Android 9测试)-accept audio/*with capture属性设置只会打开无法录制音频的摄像头应用程序。我尝试在iOS11中录制音频,但recorder.js不起作用。K48,您在iOS11上成功使用recorder.js了吗?@visual遗憾的是,在IOS/Safari 11中,音频录制和播放不起作用,但只能通过浏览器进行。独立的(又名保存到主屏幕的web应用程序)应用程序无法工作,甚至web检查器也无法识别它们(这显然是一个bug),我们无法让麦克风工作。iPad Safari和Chrome上的记录器未定义。检查代码并亲自尝试:您是否能够发布&|链接到任何演示此功能的代码?我仍在努力获取非零长度的音频数据。别忘了还有一个问题:AudioContext只能在用户交互时创建(即触摸端、单击等)。感谢您提供的关于连接输入和输出的提示,这让我抓狂!请记住,苹果仅在mobile safari中添加了适当的webrtc支持。在chrome/ff/webviews中,它仍然完全失效。苹果的差强人意的工作。这个github回购协议太棒了!比任何打包的解决方案都好得多。他称之为“测试”,沃维认为苹果成为了新的互联网浏览器。现在,微软终于获得了令人敬畏的优势。。。