Javascript getUserMedia未正确捕获屏幕
使用以下代码:Javascript getUserMedia未正确捕获屏幕,javascript,screenshot,electron,getusermedia,Javascript,Screenshot,Electron,Getusermedia,使用以下代码: function captureScreen(size) { navigator.webkitGetUserMedia({ audio: false, video: { mandatory: { chromeMediaSource: 'desktop', minWidth: size.width, maxWidth: si
function captureScreen(size) {
navigator.webkitGetUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
minWidth: size.width,
maxWidth: size.width,
minHeight: size.height,
maxHeight: size.height,
minFrameRate: 1,
maxFrameRate: 1
}
}
}, gotStream, getUserMediaError);
function gotStream(stream) {
var video = document.createElement('video');
video.addEventListener('loadedmetadata',function(){
var canvas = document.createElement('canvas');
canvas.width = this.videoWidth;
canvas.height = this.videoHeight;
var context = canvas.getContext("2d");
context.drawImage(this, 0, 0);
},false);
video.src = URL.createObjectURL(stream);
}
function getUserMediaError(e) {
console.log('getUserMediaError: ' + JSON.stringify(e, null, '---'));
}
}
给我以下结果:
请注意,图像的右侧是如何稍微向左侧包裹的?出于某种原因,这种情况发生在我的笔记本电脑(1366x768)、朋友的笔记本电脑(1366x768)上,而不是我的台式电脑(3840x1080双屏)。传递给函数的size
参数始终是整个桌面区域的正确和实际大小。即使我硬编码最小和最大宽度/高度,我也会得到相同的结果。有办法解决这个问题吗?我做错什么了吗
我正在构建一个电子应用程序,它需要拍摄用户桌面的截图。网页上也没有其他内容,我正在使用重置CSS。左包装的数量是否随屏幕宽度而变化?@raduation相同,左包装为8像素。顺便说一下,我犯了一个错误,我朋友的笔记本电脑与我的笔记本电脑(1366x768)的分辨率相同。你能试着在笔记本电脑上设置不同的屏幕分辨率,看看结果如何?可能在捕获过程中有一个bug,它期望10的倍数。这里完全是猜测,但可能@raduation为1280x720,与左包装的8像素相同。我甚至将最小和最大宽度/高度设置为脚本中的数字,这样我知道它捕获的是准确的大小。这听起来像是一个Chrome错误,不是编程问题。左包装的数量是否随屏幕宽度而变化?@raduation它是相同的,左包装8像素。顺便说一下,我犯了一个错误,我朋友的笔记本电脑与我的笔记本电脑(1366x768)的分辨率相同。你能试着在笔记本电脑上设置不同的屏幕分辨率,看看结果如何?可能在捕获过程中有一个bug,它期望10的倍数。这里完全是猜测,但可能@raduation为1280x720,与左包装的8像素相同。我甚至将最小和最大宽度/高度设置为脚本中的数字,这样我知道它捕获的是准确的大小。这听起来像是Chrome的bug,而不是编程问题。