有没有办法绕过 Chrome desktopCapture 的选择媒体屏幕?

问题描述

我正在使用 Chrome desktopCapture API 创建屏幕录制 Chrome 应用程序。

目前,我正在这样做:


app.js:

    document.querySelector('#startRecording').addEventListener('click',recordClick);
    
    function recordClick(event) {
        console.log("Start Button clicked");
        pending_request_id = chrome.desktopCapture.chooseDesktopMedia(["screen"],accessToRecord);
    }

function accessToRecord(id,options){
    if (!id) {
        console.log('Access rejected.');
        return;
    }

    let audioConstraint = {
        mandatory: {
          chromeMediaSource: 'desktop',chromeMediaSourceId: id
        }
    };
  
    console.log(options.canRequestAudioTrack);

    if (!options.canRequestAudioTrack)
      audioConstraint = false;
    //console.log("id is: "+id);

    navigator.webkitGetUserMedia({
        audio : audioConstraint,video : {
            mandatory: {
                chromeMediaSource: 'desktop',chromeMediaSourceId: id,maxWidth:screen.width,maxHeight:screen.height
            }
        }
    },startStream,failedStream);
}

background.js:

chrome.app.runtime.onLaunched.addListener(function() {
  console.log("Launch Link Clicked");
  chrome.app.window.create('index.html',{
    bounds: {
      width: 800,height: 600
    }
  });
});

manifest.json:

{
    "manifest_version" : 2,"name" : "My Screen Recorder","description" : "Allows screen recording","version" : "1","app" : {
    "background" : {
        "scripts" : ["background.js"]
    }
   },"permissions" : ["desktopCapture"]
}

这在 UI 上创建的行为:

  1. 我点击我的 Chrome 应用程序,它显示了一个“开始录制”按钮(id=startRecording 在上面的代码中使用)。 Start Recording button - custom screen
  2. 点击此按钮后,它会显示此 Google 屏幕以选择我要录制的内容: Google's Choose media prompt
  3. 然后我开始使用这个屏幕。

我想要达到的目标: 一种绕过 Google 生成的屏幕以选择要录制的媒体的方法。我想在我的代码中传递媒体类型,并在单击第一个“开始录制”按钮时,我希望它开始录制我在代码中传递的类型,而不是向我显示选择媒体提示。

能做到吗?

解决方法

不,出于安全原因——Chrome 不希望任何工具能够从浏览器外部访问敏感数据。但是,您可以在不使用 chrome.tabs.captureVisibleTab 提示的情况下捕获当前标签。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...