通话中质量监测

更新时间: 2021/04/23 07:29:52

在通话场景中,开发者经常需要了解当前通话的通话质量、设备状态等信息,监测通话的整体体验;也可将部分质量数据在 UI 层面展示给用户,使用户能够及时了解当前通话的整体质量。

NERTC SDK 支持将关键的音视频状况、网络状况、设备状态的相关指标实时回调给 APP 应用层,应用层可以将收到的数据进行展示或统计。

上下行网络质量同步

onNetworkQuality 回调向您同步当前通话中每个成员的上下行网络质量。

  • 上行网络质量打分基于实际发送码率、上行网络丢包率、平均往返时延和上行网络抖动计算。
  • 下行网络质量打分基于下行网络丢包率、平均往返时延和下行网络抖动计算。

注意

  • 每隔 2 秒您会收到房间内所有用户的网络质量同步。
  • 实际发送码率与目标发送码率的比值越高,该网络下的通话质量越好,该网络质量打分越高。

统计信息同步

onRtcStats 回调向您同步本地通话统计信息。其中包含通话时长、当前通话房间中的人数、当前系统的 CPU 使用率、当前 App 的 CPU 使用率等重要数据。

参数 描述
cpuAppUsage、cpuTotalUsage App 的 CPU 使用率和系统的 CPU 使用率。
memoryAppUsageRatio、memoryAppUsageInKBytes、memoryTotalUsageRatio App的内存使用率、内存使用量、系统的内存使用率
totalDuration 通话总时长(秒)。
txBytes/rxBytes 累计发送/接收字节数。
txAudioBytes/rxAudioBytes 音频发送/接收字节数。
txVideoBytes/rxVideoBytes 视频发送/接收字节数。
txAudioKBitRate/rxAudioKBitRate 音频接收/发送码率,单位为 kbps。
txVideoKBitRate/rxVideoKBitRate 视频接收/发送码率,单位为 kbps。
upRtt/downRtt 上行/下行平均往返时延,单位为毫秒。
txAudioPacketLossRate/rxAudioPacketLossRate 本地上行/下行音频实际丢包率。
txAudioPacketLossSum/rxAudioPacketLossSum 本地上行/下行音频实际丢包数。
txAudioJitter/rxAudioJitter 本地上行/下行音频抖动计算,单位为毫秒。
txVideoJitter/rxVideoJitter 本地上行/下行视频抖动计算,单位为毫秒。
txVideoPacketLossRate/rxVideoPacketLossRate 本地上行/下行视频实际丢包率。
txVideoPacketLossSum/rxVideoPacketLossSum 本地上行/下行视频实际丢包数。

音频质量同步

本地音频流统计信息同步

onLocalAudioStats 回调向您同步本地设备发送音频流的统计信息。包括当前通话声道数(单声道或双声道)、发送音频的采样率和发送音频的码率。SDK 会每隔 2 秒自动触发本回调。

参数 描述
numChannels 当前采集的声道数。
sentSampleRate 统计周期内本地上行音频采样率,单位为 Hz。
kbps 统计周期内发送码率的平均值,单位为 Kbps。
lossRate 特定时间内的音频丢包率。
rtt 平均往返时延(RTT)。
volume 音量,范围为 0 ~ 100。

远端音频流统计信息同步

onRemoteAudioStats 回调向您同步当前通话中每个远端用户音频流的统计信息。包括每个远端用户发送的音频流质量、声道数等信息。每隔 2 秒您会收到房间内所有远端用户的网络质量同步。

参数 描述
uid 用户 ID,指定是哪个用户的音频流。
kbps 统计周期内接收到的码率平均值,单位为 Kbps。
totalFrozenTime 远端用户在加入房间后发生音频卡顿的累计时长 (ms)。一个统计周期内,音频丢帧率达到 4% 即记为一次音频卡顿。
frozenRate 远端用户下行音频平均卡顿率。其值为远端用户在加入房间后发生音频卡顿的累计时长占音频总有效时长的百分比。
lossRate 统计周期内的远端音频流的丢帧率。
volume 音量,范围为 0 ~ 100。

视频质量同步

本地视频流统计信息同步

onLocalVideoStats 回调向您同步本地设备发送视频流的统计信息。您可以了解视频编码宽/高等信息。SDK 会每隔 2 秒自动触发本回调。

如果您此前调用 enableDualStreamMode 方法开启双流模式,则本回调描述本地设备发送的视频大流的统计信息。

参数 描述
layerType 视频流通道类型。 1:主流;2:辅流。
width 视频编码宽度,单位为 px。
height 视频编码高度,单位为 px。
captureFrameRate 视频采集帧率,单位为 fps。
renderFrameRate 视频渲染帧率,单位为 fps。
encoderOutputFrameRate 编码帧率,单位为 fps。
sentFrameRate 实际发送帧率,单位为 fps,不包含丢包后重传视频等的发送帧率。
sendBitrate 实际发送码率,单位为 Kbps,不包含丢包后重传视频等的发送码率。
targetBitrate 当前编码器的目标编码码率,单位为 Kbps,该码率为 SDK 根据当前网络状况预估的一个值。
encoderBitrate 编码器实际编码码率,单位为 Kbps。
encoderName 视频编码器名字。

远端视频流统计信息同步

onRemoteVideoStats 回调向您同步当前通话中每个远端用户/主播的视频流的统计信息。包括每个远端用户的视频宽/高等其他参数信息。SDK 会每隔 2 秒自动触发本回调。

参数 描述
layerType 视频流通道类型。 1:主流;2:辅流。
width 远端视频编码宽度,单位为 px。
height 远端视频编码高度,单位为 px。
receivedBitrate 接收到的码率(Kbps)。
fps 接收到的帧率 (fps)。
decoderOutputFrameRate 解码帧率 (fps)。
rendererOutputFrameRate 渲染帧率 (fps)。
packetLossRate 远端视频下行丢包率。
totalFrozenTime 远端用户加入房间后,其下行视频卡顿累计时长(ms)。
frozenRate 远端用户加入房间后,其下行视频平均卡顿率,其值为视频卡顿的累计时长占视频总有效时长的百分比。
decoderName 视频编码器名字。

实现方式

  • 注册一个质量监测观测器 (NERtcStatsObserver),通过 NERtc.getInstance().setStatsObserver 主动设置相应的回调。
  • 关闭质量监测功能时,传入 null 即可。

示例代码

NERtc.getInstance().setStatsObserver(NERtcStatsObserver)

API参考

功能描述
NERtcStatsObserver 统计信息回调类

事件 功能描述
onRtcStats 当前通话统计回调
onLocalAudioStats 本地音频流统计信息回调
onRemoteAudioStats 远端音频流的统计信息回调
onLocalVideoStats 本地视频流统计信息回调
onRemoteVideoStats 远端视频流的统计信息回调
onNetworkQuality 所有用户的网络状态回调
此文档是否对你有帮助?
有帮助
去反馈
  • 上下行网络质量同步
  • 统计信息同步
  • 音频质量同步
  • 本地音频流统计信息同步
  • 远端音频流统计信息同步
  • 视频质量同步
  • 本地视频流统计信息同步
  • 远端视频流统计信息同步
  • 实现方式
  • 示例代码
  • API参考