问题:
有可能通过某种技术将语音录制集成到移动网络应用程序中吗?
某些背景:
我一直在开发一个移动网络应用程序,只是为了自己的享受和研究。客户端应用程序的HTML5/CSS和JavaScript似乎一切都很顺利,尽管我似乎需要第三方技术来进行语音录制。我用Flash有一个很好的解决方案,但在用我的IPhone测试后,我想起他们似乎不支持Flash,这很令人失望,因为我有一个不错的解决方案。
录音要求:
1.必须同时使用iOS和Android
2.必须在最新版本的Firefox、Google Chrome、Internet Explorer、Opera和Safari中工作
3.必须在移动web应用程序的框架内工作
4.必须能够在不主动连接互联网的情况下进行录制
5.客户端应用程序不应该要求用户更改他们的手机操作系统
我尽可能具体地帮助你准确地回答这个问题。如果有什么不清楚的地方,请在下面的评论中告诉我,我会进一步澄清。
检查此项http://www.html5rocks.com/en/tutorials/getusermedia/intro/
HTML媒体捕获<input type="file">
适用于大多数移动浏览器,但效果不佳,因为它需要本地录制应用程序,并且需要手动激活。
getUserMedia()
和WebRTC
到目前为止,只有Chromium在移动设备中很好地支持它。
所以,我放弃了网络应用程序。混合应用程序就是解决方案
如果你想尝试混合应用程序进行录制,你可以查看Cordova插件https://github.com/emj365/cordova-plugin-audio-recorder-api我为混合应用程序中的录制任务创建的。
在提出这个问题后的几年里,似乎出现了一个解决方案。此解决方案以MediaStreamConstraints字典audio
属性的形式出现。
Mozilla的Web API文档有一个非常好的示例,如下所示:
document.getElementById("startButton").addEventListener("click", function() {
navigator.mediaDevices.getUserMedia({
audio: true
}).then(stream => audioElement.srcObject = stream)
.catch(err => log(err.name + ": " + err.message));
}, false);
资源
- https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints/audio
如果你想把它录制成音频,我认为你只能为Chrome dev、Chrome canary、Opera next和一些移动浏览器制作。使用WebRTC getUserMedia()
API,然后制作音频数据URL的blob URL以保存它
如果你想将其记录为文本,也许你可以将<input -x-webkit-speech/>
用于webkit浏览器。制作一个事件,使其每次停止录制时都会将当前录制的语音添加到元素中,然后重新开始录制。最后,制作一个blob URL,将其保存为文本文件。