我发现http://www.rtcmulticonnection.org/docs/ - 显然,可以通过WebRTC与另一个用户共享一个屏幕。现在,WebRTC对于实时共享肯定很好,但我想知道,纯JavaScript是否有可能(在用户的许可下)获取截图并直接处理它们(例如通过常规HTTP发送它们)?这将是一个很好的功能,可以远程帮助人们,而无需安装VNC / RDP / NX服务器(但是,如果实时连接不是那么重要,而是有可靠的传输)。 正如我所说,我的意思是截图,而不只是记录活动标签。
好的,更清楚的是,问题是显然可以告诉浏览器通过WebRTC进行屏幕共享(或询问用户是否这样做)。但是,一旦获得许可,就不能(直接)以编程方式访问屏幕,至少到目前为止还没有这么做。
答案 0 :(得分:0)
有很多解决方案:
1)您可以使用 RecordRTC 或类似解决方案(例如 MediaStreamRecorder 等)来记录屏幕间隔并上传&# 34;记录屏幕"到服务器
2)您可以使用<canvas>
(2D)拍摄屏幕快照并使用实时协议上传到服务器,例如websockets或XHR-long-polling或简单的XMLHttpRequest
3)要支持非WebRTC浏览器,您可以使用类似于html2canvas的解决方案,通过Canvas2D API支持网页的快照捕获
4)如果您计划编写chrome扩展程序,那么您可能想要使用&#34; captureVisibleTab&#34; API。
PS。您可以使用以下方法拍摄屏幕快照:
function takeSnapshot(video) {
var canvas = document.createElement('canvas');
canvas.width = video.videoWidth || video.clientWidth;
canvas.height = video.videoHeight || video.clientHeight;
var context = canvas.getContext('2d');
context.drawImage(video, 0, 0, canvas.width, canvas.height);
return canvas.toDataURL('image/png');
}
以下是如何使用它:
var screenVideo = document.querySelector('video');
var screenShot = takeSnapshot(screenVideo);
socketio.emit('screenshot', screenShot); // POST to server