微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Chime-将视频分配给图块无法正常工作

如何解决AWS Chime-将视频分配给图块无法正常工作


我以这种方式设置了一个AWS Chime会议,其中包含5个视频图块(video-tile-0至video-tile-4):

Chime Layout

会议建立后,观察者回调audioVideoDidStart被启动,这时我绑定了#local-video-tile

var localTileId = meetingSession.audioVideo.startLocalVideoTile();
meetingSession.audioVideo.bindVideoElement(localTileId,videoElement);
$(videoElement).show();

接下来,用户点击开始共享以激活meetingSession.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,boundAttendeeId: <guid>

tileId: 1,isLocal: true:
boundAttendeeId: null

tileId: 1,isLocal: true:
boundAttendeeId: null

tileId: 2,isLocal: false,boundAttendeeId: null

tileId: 2,isContent: true,boundAttendeeId: <guid>#content

tileId: 2,isConent: true,boundAttendeeId: <guid>

tileId: 2,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,boundAttendeeId: <guid>#content



如您所知,这会将我的screenShare绑定到#screen-share-tilevideo-tile-2

我该如何预防?
我还缺少另一个布尔值吗?

现在,它在文档中说isContent将代表屏幕共享或用户共享的内容(如视频),那么tileId 2如何具有所有这些不同的设置?是否正确标记tileId?

我尝试了if块的许多不同变体,并将startContentShareFromScreenCapture(<state>)中的状态设置为无效。
AWS提供的资源是摘要,关于其中的任何内容实际上没有多少描述。 https://aws.github.io/amazon-chime-sdk-js/index.html

任何帮助是极大的赞赏!我已经为此苦苦挣扎了两个星期。

解决方法

我会很快回答自己的问题,因为我知道越来越多的人正在寻找答案。

是:“我是否缺少另一个布尔值?”那是我的问题的答案,但是我想我会尽力像我一样帮助任何在JS SDK上苦苦挣扎的人。

我最好的建议是查看文档。...但是

要了解任何文档,您必须了解观察者。 这是了解他们的系统如何工作的关键。 audioVideoObeserver到底能做什么...?

然后注意,还有其他观察者。这些观察者对什么...?

诚然,有些观察似乎重叠,可能会引起混淆,但是请仔细查看示例,并注意它们用于什么功能的观察者。

然后理解那些观察者是循环运行的。 您需要弄清的最后一件事是在每个循环中检查哪些值。请注意,模式是相同的。

希望对别人有帮助。

,

你能分享你的 HTML,这将有助于更好地理解吗? 另外,试试这个:

if (!tileState.boundAttendeeId) {
      return;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?