动态房间和视频的联网 A 帧问题
Networked A-frame issue with dynamic-room and video
我正在使用 A-frame (https://aframe.io) and the networked A-frame component (https://www.npmjs.com/package/networked-aframe)
创建一个项目
(项目位于:https://glitch.com/edit/#!/networkedtest?path=public%2Fscene.html%3A44%3A0)
我 运行 遇到了视频源问题。目前在我的项目中,视频源工作得很好,但是每当我在第 202 行的 in scene.html 中切换这行代码时:
<a-scene moving-sun vr-mode-ui="enabled: false;" physics networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js">
使用此代码:
<a-scene moving-sun vr-mode-ui="enabled: false;" physics dynamic-room="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js">
如果我通过拉出两个选项卡来测试我的代码,视频源应该在的地方只有一个空白的白色平面。我不确定为什么,但每当我交换行的一部分时 networked-scene=""
dynamic-room=""
视频源停止工作,当您在另一个选项卡上加入时,您看到的只是一个白色屏幕,而视频源应该在那里。
我不确定为什么会这样,因为我要更改的只是 networked-scene
对应 dynamic-room
。我已经尝试通过修改一些代码来修复这个错误,但仍然找不到这个问题的答案。我感觉问题出在 public/js/dynamic-room.component.js
的某个地方,但我可能弄错了。
如果您知道如何解决这个问题,将不胜感激。
Link 到我的项目:https://glitch.com/edit/#!/networkedtest?path=public%2Fscene.html%3A44%3A0
你走在正确的轨道上。
我假设您想使用动态房间从 URL 加载自定义房间名称。 (仅此而已。如果那不是您想要的,那么动态房间不是您要找的。)
动态房间示例读取 URL,然后为您创建“联网场景”组件并将其附加到您的标签。
这是一个老例子,在视频支持之前写的,所以它不检查 video: true
:
var isMultiuser = params.hasOwnProperty('room');
var webrtc = params.hasOwnProperty('webrtc');
var adapter = webrtc ? 'easyrtc' : 'wseasyrtc';
var voice = params.hasOwnProperty('voice');
var networkedComp = {
room: params.room,
adapter: adapter,
audio: voice //<--Only setting the audio property here
};
console.info('Init networked-aframe with settings:', networkedComp);
el.setAttribute('networked-scene', networkedComp);
我建议将您的参数复制到 dynamic-room.component.js
(第 18 行)。
只有房间名称将从 URL 加载。 (如果未指定,将默认为 'audio',就像您的网络场景参数一样。)
var roomNameFromURL = params.hasOwnProperty('room');
//We won't check for these:
//var webrtc = params.hasOwnProperty('webrtc');
//var adapter = webrtc ? 'easyrtc' : 'wseasyrtc';
//var voice = params.hasOwnProperty('voice');
var networkedComp = {
//if there is no name in the URL, default to 'audio',
// like your networked-scene
room: roomNameFromURL ? params.room : 'audio',
adapter: 'easyrtc',
audio: true,
video: true,
debug: true
};
console.info('Init networked-aframe with settings:', networkedComp);
el.setAttribute('networked-scene', networkedComp);
这是 的跟进。
您的 dynamic-room
仅设置房间 ID,并发出 connect
因此 networked-scene
尝试连接到服务器:
// public/js/dynamic-room.component.js
// Setup networked-scene
var networkedComp = {
room: params.room
};
// set the room
el.setAttribute("networked-scene", networkedComp);
// emit connect
el.emit("connect", null, false);
在这种情况下,它不是 networked-scene
的替代品,它们一起工作。如果在场景之前禁用自动连接:
<script>
AFRAME.components["networked-scene"].schema.connectOnLoad.default = false;
</script>
<a-scene dynamic-room networked-scene>
视频按预期显示 (glitch here)
如果您希望 dynamic-room
执行 networked-scene
中的所有设置,那么 Michaels 的回答也是正确的。
我正在使用 A-frame (https://aframe.io) and the networked A-frame component (https://www.npmjs.com/package/networked-aframe)
创建一个项目(项目位于:https://glitch.com/edit/#!/networkedtest?path=public%2Fscene.html%3A44%3A0)
我 运行 遇到了视频源问题。目前在我的项目中,视频源工作得很好,但是每当我在第 202 行的 in scene.html 中切换这行代码时:
<a-scene moving-sun vr-mode-ui="enabled: false;" physics networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js">
使用此代码:
<a-scene moving-sun vr-mode-ui="enabled: false;" physics dynamic-room="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js">
如果我通过拉出两个选项卡来测试我的代码,视频源应该在的地方只有一个空白的白色平面。我不确定为什么,但每当我交换行的一部分时 networked-scene=""
dynamic-room=""
视频源停止工作,当您在另一个选项卡上加入时,您看到的只是一个白色屏幕,而视频源应该在那里。
我不确定为什么会这样,因为我要更改的只是 networked-scene
对应 dynamic-room
。我已经尝试通过修改一些代码来修复这个错误,但仍然找不到这个问题的答案。我感觉问题出在 public/js/dynamic-room.component.js
的某个地方,但我可能弄错了。
如果您知道如何解决这个问题,将不胜感激。
Link 到我的项目:https://glitch.com/edit/#!/networkedtest?path=public%2Fscene.html%3A44%3A0
你走在正确的轨道上。
我假设您想使用动态房间从 URL 加载自定义房间名称。 (仅此而已。如果那不是您想要的,那么动态房间不是您要找的。)
动态房间示例读取 URL,然后为您创建“联网场景”组件并将其附加到您的标签。
这是一个老例子,在视频支持之前写的,所以它不检查 video: true
:
var isMultiuser = params.hasOwnProperty('room');
var webrtc = params.hasOwnProperty('webrtc');
var adapter = webrtc ? 'easyrtc' : 'wseasyrtc';
var voice = params.hasOwnProperty('voice');
var networkedComp = {
room: params.room,
adapter: adapter,
audio: voice //<--Only setting the audio property here
};
console.info('Init networked-aframe with settings:', networkedComp);
el.setAttribute('networked-scene', networkedComp);
我建议将您的参数复制到 dynamic-room.component.js
(第 18 行)。
只有房间名称将从 URL 加载。 (如果未指定,将默认为 'audio',就像您的网络场景参数一样。)
var roomNameFromURL = params.hasOwnProperty('room');
//We won't check for these:
//var webrtc = params.hasOwnProperty('webrtc');
//var adapter = webrtc ? 'easyrtc' : 'wseasyrtc';
//var voice = params.hasOwnProperty('voice');
var networkedComp = {
//if there is no name in the URL, default to 'audio',
// like your networked-scene
room: roomNameFromURL ? params.room : 'audio',
adapter: 'easyrtc',
audio: true,
video: true,
debug: true
};
console.info('Init networked-aframe with settings:', networkedComp);
el.setAttribute('networked-scene', networkedComp);
这是
您的 dynamic-room
仅设置房间 ID,并发出 connect
因此 networked-scene
尝试连接到服务器:
// public/js/dynamic-room.component.js
// Setup networked-scene
var networkedComp = {
room: params.room
};
// set the room
el.setAttribute("networked-scene", networkedComp);
// emit connect
el.emit("connect", null, false);
在这种情况下,它不是 networked-scene
的替代品,它们一起工作。如果在场景之前禁用自动连接:
<script>
AFRAME.components["networked-scene"].schema.connectOnLoad.default = false;
</script>
<a-scene dynamic-room networked-scene>
视频按预期显示 (glitch here)
如果您希望 dynamic-room
执行 networked-scene
中的所有设置,那么 Michaels 的回答也是正确的。