5

我想对 Chromecast 设备运行的接收器应用程序进行屏幕截图。我需要让它在设备上运行以同时显示视频和应用程序。

有没有办法做到这一点 ?

4

4 回答 4

3

Ali Naddaf 的回答在技术上是正确的,但是通过一些工作,我能够忠实地重建屏幕,以至于它与实际的屏幕截图无法区分。

  1. 我们将使用来自 html2canvas 项目的代码,参见http://html2canvas.hertzen.com/documentation.html。它会将我们的屏幕渲染到画布上。特别是,将编译后的代码从http://html2canvas.hertzen.com/build/html2canvas.js复制并粘贴到 Chromecast 控制台。(向 dom 添加标签似乎不起作用)您可以通过 Chrome 访问 ip.ad.dr.ss:9222 端口来访问 Chromecast 控制台和开发人员工具。
  2. 发出以下命令:

    html2canvas(document.body, {onrendered: function(canvas){document.write('');}});

    这将破坏性地用屏幕截图替换屏幕(我觉得这很方便,但如果你愿意,你可以很容易地想到一种更礼貌的方式)

  3. 在元素浏览器中,您将拥有一个 img,其 base64 url​​ 指定为 src。单击 url,chrome 将在新选项卡中打开图像。希望这是您想要的屏幕截图。
  4. 您可能会发现由于同源政策等原因而丢失了一些图片。除了从 html 访问图像之外,javascript 还具有其他权限。如果发生这种情况,请以某种方式解决(例如,使用 https 获取图像),然后转到 1。
  5. 你有你的截图!
于 2014-08-15T17:42:37.563 回答
2

不,由于媒体权利和安全等诸多原因,这是不可能的。

于 2013-10-29T15:52:10.667 回答
2

我正在将 zsolt-szatmari 的答案扩展为可在 Chromecast 开发人员工具控制台中使用的可复制粘贴脚本:

  1. 正如他所说,将http://html2canvas.hertzen.com/build/html2canvas.js代码复制并粘贴到控制台中

  2. 调用 html2canvas 方法:它将在 DOM: 中创建一个新的 canvas 元素html2canvas(document.body, { onrendered: function(canvas) { document.body.appendChild(canvas); } });

  3. 获取画布中当前显示的图像的 base64 字符串表示:document.getElementsByTagName('canvas')[0].toDataURL('image/png');

然后你会得到一个很长的 base64 字符串:如果你点击它,Chrome 会在新标签页中显示图像。请注意,由于 html2canvas 限制,此图像可能与您的 Chromecast 上实际显示的图像相去甚远:

屏幕截图基于 DOM,因此可能不是 100% 准确到真实表示,因为它不会制作实际的屏幕截图,而是根据页面上可用的信息构建屏幕截图。

来源

于 2015-02-15T20:34:07.207 回答
0

我在想你也许可以使用它来将画布捕获到图像文件中,该文件通常在 javascript 中与画布一起使用:

var canvas = document.getElementById("mycanvas");
var img = canvas.toDataURL("image/png");

当然,您需要将此图像文件传输到某个地方 - 不完全确定如何从 chromecast 传输到最后一位。也许那是不可能的。

作为 chromecast 开发人员,我需要运行应用程序的屏幕截图来向客户展示。我最终对 chromecast 进行了一种“模拟”——在 javascript 中调用一些模型方法来显示数据,然后通过浏览器桌面上的 cast url 访问我的接收器应用程序。然后我使用屏幕捕获程序来捕获浏览器输出。这给了我与在电视上的 chromecast 上运行接收器应用程序相同的屏幕截图,它本质上只是一个显示您的 html+css+javascript 接收器的浏览器。

于 2014-10-01T19:17:35.613 回答