在Chrome上为Android设备录制音频错误?

时间:2019-06-07 07:11:56

标签: javascript web-audio-api mediarecorder-api

我正在使用 MediaStream Recording API 来记录用户的MIC。该代码在chrome窗口上可以正常工作,但是当涉及到android时,它会在录制提示音后立即停止录制。

如何使API在Android设备上工作?
我是否缺少某些东西,或者这是Web Audio API的错误?

代码如下:

  navigator.mediaDevices.getUserMedia({audio:true})
    .then(stream => {
        rec = new MediaRecorder(stream);
        rec.ondataavailable = e => {
            audioChunks.push(e.data);
            if (rec.state == "inactive"){
        let blob = new Blob(audioChunks,{type:'audio/x-mpeg-3'});
        recordedAudio.src = URL.createObjectURL(blob);

然后我只用这些行开始录制:

audioChunks = [];
rec.start();

然后停下来播放:

rec.stop();
recordedAudio.autoplay = true;

1 个答案:

答案 0 :(得分:1)

Chrome自动播放需要用户互动才能播放声音。

检查thisthis以获得基于JavaScript的解决方法。

或者,如果您要制作一个android应用并使用webview加载页面,请尝试设置 setMediaPlaybackRequiresUserGesture为假。

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("https://www.example.com");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setMediaPlaybackRequiresUserGesture(false);