如何暂停当前正在使用getusermedia记录的记录?

时间:2019-04-24 06:41:10

标签: javascript html asp.net

我正在使用getusermedia和webaudioAPI记录来自用户iam的音频,该用户能够记录并将记录的数据保存到服务器,然后我尝试暂停/恢复记录以下代码,这是我尝试过的操作,但它显示以下错误。

1>InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable at function resumeRecording()
var recordButton, stopButton, recorder;


window.onload = function () {

    navigator.mediaDevices.getUserMedia({
        audio: true
    })
    .then(function (stream) {
        if (recorder == null) {
            recorder = new MediaRecorder(stream);
            recorder.addEventListener('dataavailable', onRecordingReady);
        }

        }).catch(function (err) {
            alert(err)
        });;

};


function startRecording() {
  //  recordButton.disabled = true;
    //  stopButton.disabled = false;
    recorder.start();

}

function stopRecording() {
   // recordButton.disabled = false;
  //  stopButton.disabled = true;
    recorder.stop();


}

function pauseRecording()
{
    if (recorder.recording) {
        recorder.stop();

    }
}
function resumeRecording()
{

        recorder.start();

}

按钮单击:

   $(document).on('click','.btnPause',function(){

            x(this.title);
            $(this).html('Resume');
            $(this).removeClass('btnPause');
            $(this).addClass('btnResume');
            pauseRecording();
            return false;

        });
        $(document).on('click','.btnResume',function(){
            x(this.title);
            $(this).html('Resume');
            $(this).removeClass('btnResume');
            $(this).addClass('btnPause');
            resumeRecording();      
            return false;
        });

我该如何实现?需要您的帮助,如果有人可以帮助我,我将很感激。

1 个答案:

答案 0 :(得分:0)

这是我克服这种情况的方法,暂停和恢复以前无法用于mediarecorderAPI,但是现在可以使用 MediaRecorder.Pause() MediaRecorder.Resume()函数用于暂停和恢复

 $(document).on('click','.btnPause',function(){


       x(this.title);
        if (recorder.state === "recording") {

            recorder.pause();
            $(this).html('Resume');
          //  Console.log(recorder.state);
            // recording paused
        } else if (recorder.state === "paused") {
            $(this).html('Pause');
            recorder.resume();
            // resume recording
        }
        return false;

    });