声网应用双师课堂业务场景遇到的问题

场景描述

  1. Agora音视频SDK支持最大17端同时推流互动。

  2. 角色有老师与学生。

  3. 模式:1 v N (N > -1 && N < 1000000)。1个老师对多个学生

  4. 场景1-轮播:老师1屏幕最多看8个学生的流,当学生总数大于8时,每30秒滚动1次,每次取消订阅1个流,重新订阅1个流。
    问题:当老师订阅新流的时候,会有比较长的等待时间。因为需要等待学生推流,然后老师再订阅流。

  5. 场景2-连麦:老师1次随机与一个学生连麦互动,被开麦的学生音视频流将被显示在老师的屏幕上。
    问题:如果随机到的学生一开始未推流,那么开麦的过程也会比较漫长。导致开麦的效果不佳,往往是学生说了一半之后,流才会被订阅。

请问有什么比较好的办法避免这两个场景的问题。
最大可推流数是否能动态扩展?

1、关于场景 1,业务层的逻辑需要处理好。比如说,设定 30s 切换一个订阅流,那么在 28s(举例,仅作参考) 时老师就可以 subscribe 这个列表里的下一个学生的音视频流了,在 30s 时就可以准时 play 新的视频流。如果学生在被订阅前才推流(之前没有推流),那么可以提前通过业务服务器发送业务指令自动帮学生推流。这些都是在业务端自己控制的,灵活性比较高。
2、关于场景 2,Web 端是默认推流的,能否问下“如果随机到的学生一开始未推流” 为什么会有这种假设?什么场景下学生会推流,什么场景下学生不会去推流?这个需要你们确认一下具体的业务场景,建议不要搞得太复杂。关于你说的这个问题,可以在老师端 subscribe 成功后,即老师端收到 Client.on("stream-subscribed") 回调后,业务端发送一个消息通知学生端连麦成功。
3、同时推流数是可以超过 17 人的。只是为了通话质量,建议不超过 17 人。