本文介绍在使用声网产品实现在线互动课堂中,需要注意的 API 调用和参数设置事项。
调用 setChannelProfile
设置频道场景,推荐 1 对 1 教学场景下设置为 COMMUNICATION
,1 对 N 小班课和直播大班课场景下设置为 LIVE_BROADCASTING
。
加入频道时的 UID 需要你自己设置。声网建议你不要使用默认值 0。如果设为 0,SDK 会随机分配一个 UID,后续排查问题时会难以确定问题用户的 UID。
同一频道的用户不要使用相同的 UID,以免造成 UID 互踢。如果频道中有录制端,请确保录制端的 UID 也不能与频道中的其他 UID 一致。
加入频道时,声网强烈推荐使用动态密钥 Token 进行鉴权,并设置一个合理的 Token 过期时间(不超过 24 小时)。详见使用 Token 鉴权。
对于大多数在线教育场景,不需要调用 setAudioProfile
设置音频编码属性,采用默认设置即可。
在有高音质需求的场景(例如音乐教学场景)中,建议将 profile
设置为 MUSIC_HIGH_QUALITY (4)
,scenario
设置为 GAME_STREAMING (3)
。
在调用 setVideoEncoderConfiguration
设置视频编码属性时,声网建议不要设置太高。因为分辨率太高对低端机型的编解码 CPU 会造成压力,可能导致卡顿;码率太高会对上下行带宽造成压力。根据窗口大小,在保证视频效果的情况下,尽可能使用低分辨率和低码率,以减少编解码的资源消耗和缓解下行带宽压力。
通常来讲,视频参数的选择要根据产品实际情况来确定。
举例来说,如果是 1 对 1 教学,老师和学生的窗口比较大,要求分辨率会高一点,随之帧率和码率也要高一点;如果是 1 对 4 小班课, 老师和学生的窗口都比较小,分辨率可以低一点,对应的码率帧率也会低一点。
一般情况下, 1 对 1 教学可以选择 240P (320×240, 15 fps, 200 Kbps) 或 360P (640×360, 16 fps, 400 Kbps);1 对 N 小班课可以选择 120P (160×120, 15 fps, 65 Kbps), 180P (320×180, 15 fps, 140 Kbps) 或 240P (320×240, 15 fps, 200 Kbps) 。
如果想关闭本地视频,但是可以继续收到远端用户的视频,请调用 enableLcoalVideo(false)
方法,而不是 muteLocalVideoStream(true)
方法。前者不会占用摄像头,不会进行视频采集,后者依然进行视频采集只是不发送,会造成资源浪费。
建议在收到首帧回调 onFirstRemoteVideoFrame
后再进行视频渲染。
如场景中涉及视频旋转,可以通过设置视频属性 setVideoEncoderConfiguration
方法实现,详见设置视频属性。
多人视频场景下,推荐使用双流功能。各发流端在加入频道前或者后,都可以调用 enableDualStreamMode
方法开启双流模式,详见多人视频场景最佳实践。
在网络条件不理想,无法同时保证音频和视频质量的情况下,可以调用 setLocalPublishFallbackOption
和 setRemoteSubscribeFallbackOption
两个方法启用流回退功能,详见视频流回退。
如果用户加入频道 10 秒内没有成功,可以检查网络环境是否设置了防火墙。如果你的网络环境部署了防火墙,请参考应用企业防火墙限制以正常使用声网服务。
云录制集成相关问题详见云录制集成类 FAQ。