html - 使用 html5 捕获移动 chrome 上的麦克风输入

标签 html google-chrome mobile microphone web-audio-api

我正在尝试在适用于 Android 的 Chrome 29 Beta 中使用 HTML5 从麦克风进行录音(它在其 beta 29 中启用了网络音频支持)。在下面的代码中,ProcessAudio 是网络音频过滤函数,我在其中接收来自麦克风的输入缓冲区。我得到了正确的样本量。但是,移动版 chrome 中的音频 pcm 样本始终为零。 chrome 是否在其移动版本中禁用音频过滤器的输入?有人在 chrome 移动版中使用 HTML5 进行录音吗? 以下代码在 chrome(桌面版)中运行良好。

    <!DOCTYPE HTML>
    <html>
    <head>
    <script>
        function GetMedia(obj, fnSuccess, fnFailure)
        {
            if(navigator.getUserMedia)
            {
                return navigator.getUserMedia(obj, fnSuccess, fnFailure);
            }
            else if(navigator.webkitGetUserMedia)
            {
                return navigator.webkitGetUserMedia(obj, fnSuccess, fnFailure);
            }
            else if(navigator.mozGetUserMedia)
            {
                return navigator.mozGetUserMedia(obj, fnSuccess, fnFailure);
            }
            else if(navigator.msGetUserMedia)
            {
                return navigator.msGetUserMedia(obj, fnSuccess, fnFailure);
            }
            alert("no audio capture");
        }

        var incrementer = 0;
        function ProcessAudio(e)
        {
            var inputBuffer = e.inputBuffer.getChannelData(0);
            var outputBuffer = e.outputBuffer.getChannelData(0);
            outputBuffer.set(inputBuffer, 0);
            document.getElementById("display").innerText = 
                            incrementer + " " + inputBuffer[0];
            incrementer++;

        }

        var context = null;

        function Success(localMediaStream)
        {
            context = new window.webkitAudioContext();
            var microphone = context.createMediaStreamSource(localMediaStream);
            var node = context.createScriptProcessor(4096, 1, 1);
            node.onaudioprocess = ProcessAudio;
            microphone.connect(node);
            node.connect(context.destination);
        }
        function Error(err)
        {
            alert("no audio support");
        }
        function load(e)
        {
            GetMedia({audio:true,video:false}, Success, Error);
        }
    </script>
    </head>
    <body onload="load(event)">
    <div>Audio Player</div>
    <div id="display"></div>
    <video id="localvideo" autoplay="autoplay" style="opacity:1"></video>
    </body>
    </html>

最佳答案

我们现在可以在 Chrome for Android Beta (31.0.1650.11) 中使用网络音频输入。

关于html - 使用 html5 捕获移动 chrome 上的麦克风输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786351/

相关文章:

javascript - 升级后本地存储可用

linux - Ubuntu始终在全屏上方

html - 从 Devtools 本地保存 html

javascript - 如何使用 jQuery 编辑列表元素

javascript - 如何在 Chrome 扩展程序中将 URL 添加到下载管理器?

html - 部分的移动 View 看起来很奇怪

mobile - 在 Windows 上运行 Flutter

android - 如何将图像添加到推送通知?

javascript - 使用 Javascript 创建内部样式表

html - 无法在 bootstrap 3 中将多个列居中