我以这种方式设置了一个 AWS Chime 会议,其中包含 5 个视频磁贴(video-tile-0 到 video-tile-4):
会议建立后,观察者回调audioVideoDidStart
开始,此时我绑定了我的#local-video-tile
var localTileId = meetingSession.audioVideo.startLocalVideoTile();
meetingSession.audioVideo.bindVideoElement(localTileId, videoElement);
$(videoElement).show();
接下来,用户单击Start Share以激活SharemeetingSession.audioVideo.startContentShareFromScreenCapture();
开始后,将调用观察者回调videoTileDidUpdate
。
这就是我的问题。我有 2 个应该被占用的视频图块。
然后videoTileDidUpdate = tile =>
循环遍历 tileId 为 1 且 tileId 为 2 的图块。
但每个 tileId 循环了 4 次。并且每次,每个瓦片都有不同的设置,即使它具有相同的 tileId。
tileId: 1,
active: false,
isContent: false,
isLocal: true,
boundAttendeeId: null
tileId: 1,
active: true,
isContent: false,
isLocal: true,
boundAttendeeId: <guid>
tileId: 1,
active: true,
isContent: false,
isLocal: true:
boundAttendeeId: null
tileId: 1,
active: false,
isContent: false,
isLocal: true:
boundAttendeeId: null
tileId: 2,
active: false,
isContent: false,
isLocal: false,
boundAttendeeId: null
tileId: 2,
active: false,
isContent: true,
isLocal: false,
boundAttendeeId: <guid>#content
tileId: 2,
active: true,
isConent: true,
isLocal: false,
boundAttendeeId: <guid>
tileId: 2,
active: false,
isContent: false,
isLocal: false,
boundAttendeeId: null
通过使用 tile 对象中提供的标志,我在循环中消除了许多。
videoTileDidUpdate: tile => {
if (tile.active || tile.localTile) return;
if (tile.isContent && tile.boundAttendeeId) {
var contentVideoEl = document.getElementById("screen-share-tile");
meetingSession.audioVideo.bindVideoElement(tile.tileId, contentVideoEl);
} else if (tile.boundAttendeeId || tile.isContent || tile.localTile) {
return;
}
else
{
var videoElement = attendeeVideoElements[tile.tileId - 1];
meetingSession.audioVideo.bindVideoElement(tile.tileId, videoElement);
}
}
//Which now outputs:
tileId: 2,
active: false,
isContent: false,
isLocal: false,
boundAttendeeId: null
tileId: 2,
active: false,
isContent: true,
isLocal: false,
boundAttendeeId: <guid>#content
如您所知,这会将我的 screenShare 绑定到#screen-share-tile
和video-tile-2
如何防止这种情况?
我还缺少另一个布尔值吗?
现在它在文档中说isContent
将代表屏幕共享或用户共享的内容(如视频),那么 tileId 2 是如何拥有所有这些不同设置的呢?是否正确标记了 tileId?
我尝试了许多不同的 if 块变体,并在中设置状态startContentShareFromScreenCapture(<state>)
无济于事。
AWS 提供的资源是片段,实际上没有太多关于它应该如何工作的描述。https://aws.github.io/amazon-chime-sdk-js/index.html
任何帮助是极大的赞赏!我已经为此苦苦挣扎了两个星期。