簡體   English   中英

Chromecast將位圖發送到接收器

[英]Chromecast sending Bitmap to receiver

我們試圖使用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>

這可能不是最好的方法,但是我讓我的應用啟動了本地Web服務器,並將正確的鏈接發送到接收器。 然后,在發出HTTP請求時,服務器從磁盤流式傳輸文件。 我尚未測試過可以更改的速度/頻率。

Base64OutputStream與其他流一起使用,現在您只是將整個映像加載到內存中,這非常糟糕,遲早會給您造成內存不足錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM