【问题标题】:How to make screenshots on chromecast?如何在 chromecast 上制作屏幕截图?
【发布时间】:2013-11-08 17:07:18
【问题描述】:

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

有没有办法做到这一点?

【问题讨论】:

    标签: chromecast


    【解决方案1】:

    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. 你有你的截图!

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回答。
      【解决方案3】:

      我正在将 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% 准确到真实的表示,因为它不会产生实际的 屏幕截图,但根据信息构建屏幕截图 在页面上可用。

      (source)

      【讨论】:

        【解决方案4】:

        我在想你也许可以使用它来将画布捕获到图像文件中,该文件通常在带有画布的 javascript 中工作:

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

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

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

        【讨论】:

          猜你喜欢
          • 2015-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多