如何阻止 chrome 捕获标签?

mzi*_*mer 5 javascript google-chrome google-chrome-extension webrtc chromecast

我正在尝试构建一个类似于 chromecast 的 chrome 扩展。我正在使用chrome.tabCapture成功启动音频/视频流。如何停止屏幕捕获?我想要一个停止按钮,但我不知道该叫什么来停止它。我可以停止 LocalMediaStream,但该选项卡仍在捕获,并且不允许我在不关闭该选项卡的情况下开始新的捕获。任何建议或我可能错过的 api 页面?

Mut*_*thu 5

尝试stream.getVideoTracks()[0].stop();停止屏幕捕获。并记录使用 chrome.tabCapture API 捕获的流,您可以使用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);
});
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码片段可以帮助你:)

编辑 1:更正了 RecordRTC 初始化。