【发布时间】:2013-11-08 17:07:18
【问题描述】:
我想对 Chromecast 设备运行的接收器应用程序进行屏幕截图。 我需要让它在设备上运行才能同时显示视频和应用程序。
有没有办法做到这一点?
【问题讨论】:
标签: chromecast
我想对 Chromecast 设备运行的接收器应用程序进行屏幕截图。 我需要让它在设备上运行才能同时显示视频和应用程序。
有没有办法做到这一点?
【问题讨论】:
标签: chromecast
Ali Naddaf 的回答在技术上是正确的,但是通过一些工作,我能够忠实地重建屏幕,以至于它与实际的屏幕截图无法区分。
发出以下命令:
html2canvas(document.body, {onrendered: function(canvas){document.write('');}});
这将破坏性地用屏幕截图替换屏幕(我觉得这很方便,但如果你愿意,你可以很容易地想到一种更礼貌的方式)
【讨论】:
不,由于媒体权利和安全等诸多原因,这是不可能的。
【讨论】:
我正在将 zsolt-szatmari 的答案扩展为可在 Chromecast 开发者工具控制台中使用的可复制粘贴脚本:
如他所说,将http://html2canvas.hertzen.com/build/html2canvas.js代码复制并粘贴到控制台中
调用 html2canvas 方法:它将在 DOM 中创建一个新的 canvas 元素:html2canvas(document.body, { onrendered: function(canvas) { document.body.appendChild(canvas); } });。
获取当前显示在画布中的图像的base64字符串表示:document.getElementsByTagName('canvas')[0].toDataURL('image/png');
然后你会得到一个很长的 base64 字符串:如果你点击它,Chrome 会在新标签页中显示图片。请注意,由于 html2canvas 的限制,此图像可能与您的 Chromecast 上实际显示的图像相去甚远:
屏幕截图基于 DOM,因此可能不是 100% 准确到真实的表示,因为它不会产生实际的 屏幕截图,但根据信息构建屏幕截图 在页面上可用。
(source)
【讨论】:
我在想你也许可以使用它来将画布捕获到图像文件中,该文件通常在带有画布的 javascript 中工作:
var canvas = document.getElementById("mycanvas");
var img = canvas.toDataURL("image/png");
当然,您需要将此图像文件传输到某个地方 - 不完全确定如何从 chromecast 传输到最后一位。也许那是不可能的。
作为一名 chromecast 开发人员,我需要运行应用的屏幕截图来向客户展示。我最终对 chromecast 进行了一种“模拟”——在 javascript 中调用一些模型方法来显示数据,然后通过浏览器桌面上的 cast url 访问我的接收器应用程序。然后我使用屏幕捕获程序来捕获浏览器输出。这给了我与在电视上的 chromecast 上运行接收器应用程序相同的屏幕截图,它本质上只是一个显示您的 html+css+javascript 接收器的浏览器。
【讨论】: