如何添加音视频通话质量监测

在实时通信(RTC)应用中,保持高质量通话对流畅的用户体验至关重要。通话质量监测能帮助开发者追踪延迟、抖动、丢包率及网络稳定性等指标。通过集成高效的监控系统,您可快速定位问题、优化性能,并在不同网络环境下确保稳定的音视频质量。本文将阐述如何为应用添加通话质量监测功能,并介绍ZEGO实时音视频SDK(Express-Video SDK)如何通过内置分析与诊断工具简化该流程。

如何添加音视频通话质量监测

什么是通话质量监测?

通话质量监测是指测量和分析决定实时通信系统性能的关键指标的过程。这些指标通常包括延迟、抖动、丢包率和比特率,它们共同反映语音或视频通话的流畅度和稳定性。

通过持续追踪这些指标,开发者可实现问题早期预警、识别网络薄弱环节,从而提升通话整体可靠性。借助 ZEGO Express-Video SDK,可轻松将监控功能集成至应用程序。它还提供内置工具支持数据可视化、警报推送及通话后分析,助力您为所有用户维持卓越的通信质量。

为什么通话质量监测很重要?

在实时通信中,即使通话质量出现微小的下降,也会影响用户满意度和留存率。几百毫秒的延迟或音频的突然中断都可能导致用户感到沮丧,并降低他们对平台的信任度。通话质量监测能够帮助开发者了解其应用在不同网络环境和设备类型下的性能表现。

借助精准的性能洞察,团队可以识别问题根源,例如网络连接不良、硬件限制或服务器过载。企业还能基于数据进行改进,确保通话清晰稳定,不受用户位置的影响。通过集成 ZEGO SDK 的通话质量监测功能,开发者可以实时监控通话指标、分析模式,并在所有设备和平台上提供更流畅的通信体验。

如何为您的应用添加通话质量监测功能

在使用 ZEGO Express SDK 进行通话中,用户有时会出现网络不好的情况,此时您可以通过相关回调了解当前通话的网络质量和音频/视频信息的变化。

前提条件

在监测通话质量之前,请确保:

基础网络质量报告

您可以通过监听onNetworkQuality回调,收到用户(包括您自己)的上下行网络质量。此回调每隔两秒会收到一次,网络质量等级请参考ZegoStreamQualityLevel。代码示例:

public void setEngineEventHandler(){
        engine.setEventHandler(new IZegoEventHandler() {
            @Override
            public void onNetworkQuality(String userID, ZegoStreamQualityLevel upstreamQuality, ZegoStreamQualityLevel downstreamQuality) {
                super.onNetworkQuality(userID, upstreamQuality, downstreamQuality);
                if (userID == "") {
                    // 代表本地用户(本端)的网络质量
                    //("我的上行网络质量是 %lu", (unsigned long)upstreamQuality);
                    //("我的下行网络质量是 %lu", (unsigned long)downstreamQuality);
                } else {
                    //代表房间内其他用户的网络质量
                    //("用户 %s 的上行网络质量是 %lu", userID, (unsigned long)upstreamQuality);
                    //("用户 %s 的下行网络质量是 %lu", userID, (unsigned long)downstreamQuality);
                }

                /*
                ZegoStreamQualityLevel.EXCELLENT, 网络质量极好
                ZegoStreamQualityLevel.GOOD, 网络质量好
                ZegoStreamQualityLevel.MEDIUM, 网络质量正常
                ZegoStreamQualityLevel.BAD, 网络质量差
                ZegoStreamQualityLevel.DIE, 网络异常
                ZegoStreamQualityLevel.UNKNOWN, 网络质量未知
                */

            }
        });

    }

进阶质量报告

如果上述的基础网络质量报告不能满足您的需求,ZEGO 还提供了更详细的推流质量报告、拉流质量报告以及其他相关信息。

推流质量报告

推流质量报告是指描述用户把音视频推送到 ZEGO 服务端这个过程的质量报告,包含了采集、编码阶段音视频流的帧率,传输(发送)的音视频流的帧率、码率、延时及丢包率。

您可以通过注册onPublisherQualityUpdate接收推流质量回调,推流成功后每隔三秒会收到此回调。可根据 quality(ZegoPublishStreamQuality) 参数实时了解推送的音视频流的健康情况。

  • 大多数情况下,您只需关注 “quality” 的 “level” 参数,以 “level” 枚举值来判断推流的综合质量,详情可参考ZegoStreamQualityLevel
  • 如果您想关注更详细的推流质量参数,可以参考ZegoPublishStreamQuality
    engine.setEventHandler(new IZegoEventHandler() {

            // 开发者可以在此回调中监控具体的质量以上报到业务服务器做监控,或者监控质量对象的某个字段以给用户友好的提示
            @Override
            public void onPublisherQualityUpdate(String streamID, ZegoPublishStreamQuality quality) {
                String networkQuality = "";
                // level 代表了推流质量的综合分数,大部分情况下,开发者可以参考此分数展示上行网络的质量

                switch (quality.level) {
                    case EXCELLENT:
                        networkQuality = "非常好";
                        break;
                    case GOOD:
                        networkQuality = "好";
                        break;
                    case MEDIUM:
                        networkQuality = "一般";
                        break;
                    case BAD:
                        networkQuality = "差";
                        break;
                    case DIE:
                        networkQuality = "失败";
                        break;
                    case UNKNOWN:
                        networkQuality = "未知";
                        break;
                    default:
                        break;
                }
                //("网络质量是:%s", networkQuality);
            }
        });

拉流质量报告

拉流质量报告指用户拉取播放音视频流这个过程的质量报告,包含了接收的音视频流的帧率、码率、延时和丢包率,解码阶段音视频流的帧率,以及渲染阶段的帧率、卡顿率、音视频整体质量。

同推流,您可以通过注册 onPlayerQualityUpdate 接收拉流质量回调,拉流成功后每隔三秒会收到此回调。开发者可根据 quality(ZegoPlayStreamQuality) 参数实时了解拉取的音视频流的健康情况。

    engine.setEventHandler(new IZegoEventHandler() {
            // 开发者可以在此回调中监控具体的质量以上报到业务服务器做监控,或者监控质量对象的某个字段以给用户友好的提示
            @Override
            public void onPlayerQualityUpdate(String streamID, ZegoPlayStreamQuality quality) {
                String networkQuality = "";
                // level 代表了拉流质量的综合分数,大部分情况下,开发者可以参考此分数展示下行网络的质量

                switch (quality.level) {
                    case EXCELLENT:
                        networkQuality = "非常好";
                        break;
                    case GOOD:
                        networkQuality = "好";
                        break;
                    case MEDIUM:
                        networkQuality = "一般";
                        break;
                    case BAD:
                        networkQuality = "差";
                        break;
                    case DIE:
                        networkQuality = "失败";
                        break;
                    case UNKNOWN:
                        networkQuality = "未知";
                        break;
                    default:
                        break;
                }
                //("网络质量是:%s", networkQuality);
            }
        });
}

其他信息监测

其他信息监测,比如:

  • 推流/拉流状态变化通知
  • 接收到音频/视频首帧的通知
  • 视频分辨率变化的回调

等等,都可以通过集成相关 API 来实现,这里不一一列举,详细操作文档请查看:通话质量监测

结论

通话质量监测是构建可靠通信体验的关键环节。通过追踪延迟、抖动、丢包率和比特率等指标,开发人员即使在复杂的网络环境下也能保持稳定的语音和视频性能。精心设计的监控系统有助于及早发现问题,提升整体质量,并增强用户满意度。

借助 ZEGO SDK,开发者可以轻松集成实时通话监控和分析功能,无需从零开始构建。它提供您所需的工具和数据,确保您平台上的每一次通话都流畅、清晰且稳定。

常见问题

Q1:什么是通话质量监测?

通话质量监控是指跟踪和分析延迟、抖动、丢包率和比特率等指标,以评估实时通信性能的过程。它有助于确保语音和视频通话清晰、稳定、可靠。

Q2:如何衡量通话质量?

您可以通过监控网络和音频指标来衡量通话质量,这些指标包括延迟、抖动、丢包率和平均意见得分 (MOS)。这些指标反映了用户对您通信服务的实时体验。

Q3:谁可以进行通话质量监测?

开发人员、网络管理员和提供实时通信服务的企业都可以进行通话质量监测。他们使用诸如 ZEGO 的 Express-Video SDK 等专用工具来收集、分析和可视化性能数据。

Q4:什么是通话监控?

通话监控是指为了质量保证、培训或合规性而对语音或视频通信会话进行观察和审查的更广泛过程。它可以包括实时观察、录音分析以及基于预定义标准的自动质量评估。

原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/2941/

(0)
上一篇 3天前
下一篇 9月 2, 2025 9:25 上午

相关推荐

发表回复

登录后才能评论