mziemer
mziemer

Reputation: 348

How to stop chrome from capturing a tab?

I'm trying to build an chrome extension similar to the chromecast one. I am using chrome.tabCapture to successfully start a audio/video stream. How do I stop the screen capture? I want to have a stop button, but I am not sure what to call to stop it. I can stop the LocalMediaStream, but the tab is still capturing and does not allow me to start a new capture without closing the tab. Any suggestions or maybe an api page I may have missed?

Upvotes: 6

Views: 3620

Answers (1)

Muthu
Muthu

Reputation: 357

Try stream.getVideoTracks()[0].stop(); to stop the screen capture. And to record the stream caught using chrome.tabCapture API , you could use RecordRTC.js

var video_constraints = {
    mandatory: {
        chromeMediaSource: 'tab'
    }
};
var constraints = {
    audio: false,
    video: true,
    videoConstraints: video_constraints
};

chrome.tabCapture.capture(constraints, function(stream) {
    console.log(stream)
    var options = {
        type: 'video',
        mimeType : 'video/webm',
        // minimum time between pushing frames to Whammy (in milliseconds)
        frameInterval: 20,
        video: {
            width: 1280,
            height: 720
         },
         canvas: {
            width: 1280,
            height: 720
         }
     };
     var recordRTC = new RecordRTC(stream, options);
     recordRTC.startRecording();

    setTimeout(function(){
        recordRTC.stopRecording(function(videoURL) {
            stream.getVideoTracks()[0].stop();
            recordRTC.save();
         });
    },10*1000);
});

I hope the above code snippet would help you :)

Edit 1: corrected the RecordRTC initialization.

Upvotes: 5

Related Questions