我目前正在尝试创建一个测试站点,允许用户录制语音笔记并将其保存到他们的帐户中。使用PHP或JavaScript最好的方法是什么?
我希望这个过程的步骤是:
1) 用户单击记录按钮。2)启动记录序列3) 正在停止序列。4) 命名文件并将其发送到服务器。
我的主要查询集中在第二步上,在那里我需要一些与用户麦克风交互的机制来录制语音。我对web开发本身还是个新手,我不知道如何使用JavaScript调用语音录制。
在谷歌搜索后,我在StackOverflow中找到了一些链接,这些链接解决了类似的问题,但答案没有帮助。很多解决方案都指向Flash,但我希望尽可能避免这种情况。因此,我的问题可以归结为"是否可以使用JavaScript录制语音?如果可以,如何录制?"
提前谢谢。
HTML5 Audio API在浏览器中不受广泛支持,我认为它可以在Chrome和Firefox中使用,最近它被添加到了它的夜总会。。。在此阶段需要浏览器前缀,但一般的API是…
navigator.getUserMedia({audio: true}, function(stream) { /* do stuff */ });
因此,这将是Chrome的webkitGetUserMedia
和Firefox的mozGetUserMedia
。
您现在更一致的选择是通过Flash或Java等浏览器插件,或者创建用户需要安装的桌面客户端。
关于getUserMedia的感兴趣的资源:
- getUserMedia简介
- getUserMedia已添加到Firefox夜生活
- Chromium中getUserMedia的仅音频问题
以下问题可能会进一步帮助您:
使用flash或javaservlet将麦克风数据从浏览器上传到服务器的教程?
您现在可以通过创建将本地MediaStream连接到ScriptProcessingNode的音频图来从麦克风进行录制:
navigator.webkitGetUserMedia({video: true, audio: true}, function(stream) {
var audioContext = new webkitAudioContext,
mediaStreamSource = context.createMediaStreamSource(stream),
processor = context.createJavaScriptNode(4096, 2, 2);
processor.onaudioprocess = function(e) {
// Process the audio data found in e.inputBuffer
};
mediaStreamSource.connect(processor);
processor.connect(context.destination);
});
(使用Chrome供应商前缀)
您可以将其连接到Websockets,甚至是普通的XHR,将块发送到服务器,服务器可以将其处理为音频文件。您需要从转换每个通道
标称范围为-1->+1 的非交错IEEE 32位线性PCM
转换为您选择的格式。
这里可以找到一个类似的音频录制、编码为wav文件并保存(所有客户端)的例子:
https://github.com/muaz-khan/WebRTC-Experiment/tree/master/RecordRTC
更多关于AudioContext:的详细信息
http://docs.webplatform.org/wiki/apis/webaudio/AudioContext
在HTML5音频录制到来之前,您确实需要将Flash和移动设备上的文件上传相结合的解决方案。在移动设备上,文件上传屏幕通常有一个音频或视频记录器,因此用户可以直接从设备上进行记录。
如果设备在上传文件时没有录音机,则应使用录音机,然后在服务器上将视频转换为MP3。这就是我们在recordmp3online.com.