【发布时间】:2021-01-27 22:27:21
【问题描述】:
我正在使用 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 上创建的行为:
- 我点击我的 Chrome 应用程序,它显示了一个“开始录制”按钮(上面代码中使用了 id=startRecording)。 Start Recording button - custom screen
- 当我点击这个按钮时,它会显示这个谷歌屏幕来选择我想要记录的内容: Google's Choose media prompt
- 然后我开始使用这个屏幕。
我想要实现的目标: 一种绕过 Google 生成的屏幕来选择要录制的媒体的方法。我想在我的代码中传递媒体类型,并在单击第一个“开始录制”按钮时,我希望它开始录制我在代码中传递的类型,而不是向我显示选择媒体提示。
有可能吗?
【问题讨论】:
-
寻找相同的。总是有那个丑陋的弹出窗口是糟糕的用户体验。
-
是的,这也是我的主要原因@bhagyashingale。如果您发现任何内容,请发表评论。
-
所以一个名为 awesome screenshot 的扩展设法绕过了它。我认为使用的是 webRTC 而不是 chrome api。如果您使用它来解决它,请让我参与其中。
标签: javascript google-chrome-extension webrtc screen-recording desktopcapturer