【发布时间】:2020-09-15 10:53:30
【问题描述】:
我有一个简单的基于 python 的 websocket 服务器,它将视频帧作为 base64 字符串传递给客户端。
我的客户代码
var ws = new WebSocket("ws://127.0.0.1:5678/")
ws.onmessage = function (event) {
console.log("Event received: ", event.data.length)
let data = event.data.slice(0, -1);
document.getElementById('sky').setAttribute('src', "data:image/jpg;base64," + data);
};
当我使用时
//html
<img id="sky" src="" >
作为图像容器,产生一个“视频”。
但是当我切换到
<a-scene>
<a-assets>
<img id="sky" src="sky.png">
</a-assets>
<a-sky src="#sky"></a-sky>
</a-scene>
图片容器卡在第一帧,虽然更新了img元素的src属性,但是网页上的图片并没有改变。
我查看了文档,但找不到任何东西。需要注意什么?
【问题讨论】:
-
你在html中使用的是
-
尝试在client.py文件中,AFRAME.getElement.....
-
是的,我使用的正是那个版本。 AFRAME 被定义并返回和对象。没有为该对象定义 getElement。
-
github.com/supereggbert/aframe-htmlembed-component 在此清楚地写道,“所有样式和图像必须位于同一来源或允许通过 CORS 访问;这允许组件嵌入渲染所需的所有资产html 通过 foreignObject 元素正确地放到画布上。”
-
也许材质或纹理对象需要将
needsUpdate标志设置为true。您可以在每次 websocket 更新时尝试这样做。
标签: javascript html aframe