【技术教程】如何快速实现即构推拉流网络探测及推流测速
在直播、在线教育、线上会议等音视频应用场景中,网络质量的好坏会直接影响用户体验。从主播端推流到观看端拉流,涉及多地多端的网络,一旦出现网络连通性问题,往往难以快速清晰判定问题发生的阶段、原因,不利于及时排查故障和后续运营优化。
因此,即构在本月全新上线了推拉流网络探测及推流测速功能,通过调用相关接口,即可实现网络探测及上行推流速率测试,从而获得网络质量动态感知、事后分析的能力,不断提升运营质量。
一、推拉流网络探测
应用场景:
在推拉流过程中或者登陆房间之前遇到网络问题,用户可调用网络探测接口进行网络探测,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技术支持处理
以上就是即构网络探测及推流测速功能的应用及实践,我们将持续迭代优化,将诊断信息用于改进即构节点的保底逻辑。降低网络等不可控因素带来的负面影响,不断提升用户使用体验。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程