如何使用Javascript / PHP录制用户的声音? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Javascript / PHP录制用户的声音? [关闭]相关的知识,希望对你有一定的参考价值。

我目前正在尝试建立一个测试网站,允许用户录制语音笔记并将其保存到他们的帐户。使用phpjavascript执行此操作的最佳方法是什么?

我希望这个过程的步骤是:

1)用户单击录制按钮。 2)启动录制序列。 3)停止序列。 4)命名文件并将其发送到服务器。

我的主要问题集中在第二步,我需要一些与用户的麦克风交互来记录语音的机制。我仍然是Web开发人员的新手,我不知道如何使用JavaScript调用录音。

在Google中搜索后,我在StackOverflow中找到了一些解决类似问题的链接,但答案没有帮助。许多解决方案都指向Flash,但我希望尽可能避免这种情况。所以我的问题归结为“是否有可能使用JavaScript录制语音?如果是,怎么样?”

提前致谢。

答案

html5音频API在浏览器中没有得到广泛支持,我认为它可以在Chrome中使用,而Firefox最近已将它添加到它的夜间......此阶段需要浏览器前缀,但通用API是......

navigator.getUserMedia({audio: true}, function(stream) { /* do stuff */ });

那就是Chrome的webkitGetUserMedia和Firefox的mozGetUserMedia

您现在更加一致的选项是通过Flash或Java等浏览器插件,或创建用户需要安装的桌面客户端。

关于getUserMedia感兴趣的资源:

以下问题可能会对您有所帮助:

tutorial on using flash or java servlet to upload microphone data from browser to server?

另一答案

您现在可以通过创建将本地MediaStream连接到ScriptProcessorNode的音频图表从麦克风录制:

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,以将块发送到您的服务器,服务器可以将其处理为音频文件。您需要转换每个频道

非交错IEEE 32位线性PCM,标称范围为-1 - > +1

进入您选择的格式。

可以在此处找到录制音频,将其编码为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上做的事情。

以上是关于如何使用Javascript / PHP录制用户的声音? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用javascript直接从网页录制

如何使用 javascript 从 Audio Element 录制音频

如何使用 JAVASCRIPT 录制音频和视频? (反应 JS)

录制使用 javascript 播放的声音

如何使用 Javascript 在移动 Safari 和所有其他浏览器上录制音频?

如何在 javascript 中使用 audioWorklet 和 AudioWorkletProcessor 录制音频?