1

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

目前,我正在这样做:


应用程序.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);
}

背景.js:

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

清单.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)。 开始录制按钮 - 自定义屏幕
  2. 一旦我在这个按钮上计时,它就会显示这个谷歌屏幕来选择我想要记录的内容: 谷歌的选择媒体提示
  3. 然后我开始使用这个屏幕。

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

有可能这样做吗?

4

1 回答 1

0

No, for security reasons—Chrome doesn't want any tool to be able to access sensitive data from outside the browser. You may, however, capture the current tab without prompting with chrome.tabs.captureVisibleTab.

于 2021-03-04T03:02:26.280 回答