Chromecast将Bitmap发送到接收器

时间:2013-08-02 20:48:59

标签: javascript android google-cast

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

相关的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>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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