【问题标题】:How can I record a user's voice using Javascript/PHP? [closed]如何使用 Javascript/PHP 录制用户的声音? [关闭]
【发布时间】:2012-08-27 20:52:03
【问题描述】:

我目前正在尝试创建一个允许用户录制语音笔记并将其保存到他们的帐户的测试站点。使用 PHP 或 JavaScript 的最佳方法是什么?

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

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

我的主要查询集中在第二步,我需要一些机制来与用户的麦克风交互来录制声音。我对网络开发本身还是新手,我不知道如何使用 JavaScript 调用语音记录。

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

提前致谢。

【问题讨论】:

  • 我不知道为什么这个问题被关闭了。由于它被标记为 JavaScript/HTML5,我认为它一点也不含糊。用户试图询问他们将如何在浏览器中录制音频。由于它也被标记为 PHP,我认为下一个合乎逻辑的步骤是通过 XHR 将捕获的音频发送到服务器。这是 WebRTC 可能处理的事情。不幸的是,我认为我无法重新打开这个问题。
  • 我认为它已关闭,因为海报没有展示他们自己所做的任何努力或研究。因此,很难准确猜测问题的确切意图。
  • 我已投票重新开放,但问题仍然可以改进,主要是因为仍然没有实际问题。听起来第二步确实是您需要帮助的地方,但您没有具体问题;想出一个将有很大帮助。如果您认为这可以在 JavaScript 中完成,请在 google 上进行一些研究(听起来像您所做的那样),发布它没有帮助的原因,准确解释您想要什么,您尝试过什么以及您在哪里卡住。您可以添加任何内容以帮助人们相信您一直在尝试自己解决这个问题,这会让人们感到更加仁慈。
  • @Beska:感谢您的建议!我将对问题进行一些更改。

标签: php javascript flash html


【解决方案1】:

HTML5 音频 API 在浏览器中没有得到广泛支持,我认为它可以在 Chrome 中运行,而 Firefox 最近将它添加到了它的 nightlies 中……现阶段需要浏览器前缀,但通用 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?

【讨论】:

    【解决方案2】:

    您现在可以通过创建将本地 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 以将块发送到您的服务器,服务器可以将其处理成音频文件。您需要将每个频道从

    非交错 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

    【讨论】:

      【解决方案3】:

      在 HTML5 音频录制到来之前,您确实需要将 Flash 和移动设备上的文件上传结合在一起的解决方案。在移动设备上,文件上传屏幕通常有一个音频或视频记录器,因此用户可以直接从他们的设备进行记录。

      如果设备在文件上传时没有录音机,您应该使用录像机,然后在服务器上将视频转换为 MP3。这就是我们在recordmp3online.com 上处理它的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        相关资源
        最近更新 更多