录制停止后删除红色图标

时间:2014-10-31 08:54:30

标签: javascript jquery

我正在使用recording.js。功能正常,但在我停止录制后,红色图标仍显示在chrome的标签中(标题附近)。请建议做什么。 对不起,如果这很容易..:P

这是我的代码:

window.URL = window.URL || window.webkitURL;
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

    var recorder;
    var savedSrc = '';
    var audio = document.querySelector('audio');

var onFail = function(e)
    {
        console.log('Rejected!', e);
    };

    var onSuccess = function(s)
    {
        var context = new AudioContext();
        var mediaStreamSource = context.createMediaStreamSource(s);
        recorder = new Recorder(mediaStreamSource);
        recorder.record();
        $('#recordText').html('Recording...');
        // audio loopback
        // mediaStreamSource.connect(context.destination);
    };



    function startRecording()
    {
        if (navigator.getUserMedia)
        {
            navigator.getUserMedia(
            {
                video : false,
                audio : true,
                toString : function()
                {
                    return "audio";
                }
            }, onSuccess, onFail);
        }
        else
        {
            console.log('navigator.getUserMedia not present');
        }

    };

    function stopRecording()
    {
        $('#recordText').html('Record');
        recorder.stop();
        recorder.exportWAV(function(s)
        {

            audio.src = window.URL.createObjectURL(s);
        });
    }

4 个答案:

答案 0 :(得分:13)

使用Recorder.js后删除红色图标:

var audioStream;    
var onSuccess = function(s) {
    ...
    audioStream = s;
}

function stopRecording() {
   ...
   audioStream.getTracks()[0].stop();
}

getTracks()只返回一个元素,因为您在配置中只使用了音频。

我希望它会帮助别人。

答案 1 :(得分:1)

它是browser feature,而不是网站功能。它会在那里关闭选项卡,指示"此选项卡可以访问或使用麦克风或网络摄像头"。

在撰写答案时,无法删除该图标。您现在可以在录制停止后将其删除。 检查@akaravashkin的答案,我还没有测试过。

答案 2 :(得分:0)

您可以使用成功处理程序中返回的流对象直接结束流到getUserMedia。 实施例

 localMediaStream.stop()

答案 3 :(得分:0)

这意味着您的浏览器正在保存麦克风流的活动实例。 下面给出的解决方案可以成为您思想的食粮。 解决方案: 在分配音频流时,请确保您将对其的引用分配给 windows 变量,并从您需要的任何位置控制(停止)。

看看我的代码是否对你有意义,它在我的情况下有效。确保在停止后重新分配流,否则您将收到异常,因为停止完全破坏现有实例。 (请相应地修改代码)

// Excerpt from my reactjs code
async function requestRecorder() {
  const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
  window.localStream=stream;
  return new MediaRecorder(stream);
}

  const stopRecording = () => 
  {
    //release mic resource and hence red icon is removed
    window.localStream.getTracks()[0].stop();

  };