【技术教程】如何快速实现即构推拉流网络探测及推流测速
在直播、在线教育、线上会议等音视频应用场景中,网络质量的好坏会直接影响用户体验。从主播端推流到观看端拉流,涉及多地多端的网络,一旦出现网络连通性问题,往往难以快速清晰判定问题发生的阶段、原因,不利于及时排查故障和后续运营优化。
因此,即构在本月全新上线了推拉流网络探测及推流测速功能,通过调用相关接口,即可实现网络探测及上行推流速率测试,从而获得网络质量动态感知、事后分析的能力,不断提升运营质量。
一、推拉流网络探测
应用场景:
在推拉流过程中或者登陆房间之前遇到网络问题,用户可调用网络探测接口进行网络探测,ZEGO SDK会对HTTP、TCP、UDP 协议进行探测,若探测失败,会启动Traceroute路由跟踪。最终将探测的结果回调给用户,同时SDK本地日志和即构后台均有记录。
功能实现:
新增 StartNetworkTrace、StopNetworkTrace 接口,用于网络探测。用户可以手动调用接口进行网络探测,在登录房间出现异常时,通过网络探测收集日志记录,方便用户侧统计和上报给ZEGO后台。但不推荐把网络探测作为推流前的必须路径,当网络质量较差的情况下,网络探测耗时过久,会导致用户体验急剧下降。
而在以下异常情况下,ZEGO SDK会进行自动探测,用户即使不主动调用,也可以实现在本地日志记录结果的同时上报即构后台。
1) Quic Connect/LoginRoom/UDP Dispatch/Publish timeout/Play timeout 超时
2) 无缓存时统一调度
3) 统一接入连接失败
4) LoginRoom失败
5) UDP Dispatch 失败
6) Publish/Play hello timeout
实际场景中只要触发上述任一情况,就会开始探测,如果在探测过程中又触发了其他情况,系统不会重复探测,而是等待前一次探测结果。
二、推流测速
应用场景:
在推流前可进行流媒体协议(基于UDP)连通性及上行推流速率测试,帮助用户测试UDP 连通性是否正常,判断上行网络质量是否良好。如果出现网络质量“差”的情况,业务平台侧可建议推流端适当降低推流码率,从而获得更好的体验。
推流测速广泛适用于多场景,比如,在线教育场景中,教师在开课前先进行推流测试,根据网络情况选择推流码率;秀场直播中,主播可能会在直播前调试美颜滤镜效果,可以同步开启测速。
功能实现:
新增 StartConnectivityTest、StopConnectivityTest 接口,用于 UDP 连通性测试;新增 StartSpeedTest、SetQualitycallbackInterval、StopSpeedTest 等接口,用于网络测速。
两者都是初始化SDK 后调用,同一时间内只有一个生效,开始推拉流则会中断此操作。
需要注意的是:
- 连通性测试只测试UDP网络是否与ZEGO媒体服务连通,而测速则会实际产生媒体数据。
- 测速过程中会消耗服务器资源,但不产生计费,目前服务推流只配置测速180S。超过时间未停止,则会返回1017错误。
- 如需开通UDP连通性测试及推流测速,请联系ZEGO技术支持处理
以上就是即构网络探测及推流测速功能的应用及实践,我们将持续迭代优化,将诊断信息用于改进即构节点的保底逻辑。降低网络等不可控因素带来的负面影响,不断提升用户使用体验。