【问题标题】:Chromecast sending Bitmap to receiverChromecast 将位图发送到接收器
【发布时间】:2013-08-04 06:06:31
【问题描述】:

使用 Chromecast 加密狗,我们试图在接收器上显示源自 android 的位图,该位图经常更改。我们目前的做法是将图像转换为 Base64,然后将其作为 URL 提交。这可行,但速度很慢,而且似乎效率低下。在接收器上显示本地位图的最佳方式是什么?

相关Java代码:

Bitmap bitmap1 = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap1.compress(CompressFormat.JPEG, 85, baos);
String image = "data:image/jpeg;base64,"+Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
mMessageStream.loadMedia(image, mMetaData, true);

receiver.html:

<html>
<script src="https://www.gstatic.com/cast/js/receiver/1.0/cast_receiver.js">
</script>
<script type="text/javascript">

    var receiver = new cast.receiver.Receiver(
        'ACTUAL_APP_ID_HERE', [cast.receiver.RemoteMedia.NAMESPACE],
        "",
        3);
    var remoteMedia = new cast.receiver.RemoteMedia();
    remoteMedia.addChannelFactory(
        receiver.createChannelFactory(cast.receiver.RemoteMedia.NAMESPACE));

    receiver.start();

    window.addEventListener('load', function() {
      var elem = document.getElementById('vid');
      remoteMedia.setMediaElement(elem);
    });
</script>

<body>
<img id="vid" style="position:absolute;top:0;left:0;height:100%;width:100%" />
</body>
</html>

【问题讨论】:

    标签: javascript android google-cast


    【解决方案1】:

    将Base64OutputStream 与其他流一起使用,现在您只是将整个图像加载到内存中,这非常糟糕,迟早会给您带来内存不足的错误。

    【讨论】:

    • 您是说我会在 Android 设备或 Chromecast 加密狗上耗尽内存吗?我确实需要 Android 设备上的位图形式的图像稍后放入 ImageView。
    【解决方案2】:

    这可能不是最好的方法,但我让我的应用程序启动一个本地 Web 服务器,并将正确的链接发送给接收者。根据 http 请求,服务器然后从磁盘流式传输文件。我还没有测试过它可以改变的速度/频率。

    【讨论】:

    • 如果这有什么不同(通过 WebSockets 连接发送位图与让接收器通过 HTTP 加载它)进行基准测试会很有趣。启动 HTTP 服务器似乎只会为流添加一些间接性,我无法想象为什么这会比通过 WebSocket 流式传输更快,但是我又不太了解协议的内部工作原理.
    • 我在使用 C# 时遇到了同样的问题。无法从控制台应用程序向 Chromecast 发送本地图像。
    猜你喜欢
    • 2015-05-04
    • 2014-06-15
    • 1970-01-01
    • 2015-07-28
    • 2016-01-22
    • 1970-01-01
    • 2017-08-19
    • 2018-10-29
    • 2018-01-21
    相关资源
    最近更新 更多