通话中质量监测

更新时间: 2024/08/05 15:02:55

在通话场景中,开发者经常需要了解当前通话的通话质量、设备状态等信息,监测通话的整体体验;也可将部分质量数据在 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 本地上行/下行视频实际丢包数。

音频质量同步

本地音频流统计信息同步

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

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

远端音频流统计信息同步

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

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

视频质量同步

本地视频流统计信息同步

onLocalVideoStat 回调向您同步本地设备发送视频流的统计信息。您可以了解视频编码宽/高等信息。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 秒自动触发本回调。

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

实现方式

  • 使用接口 addEngineMediaStatsObserver: 添加 media 统计信息观测器,实现代理方法中相应的接口,即可收到对应回调。
  • 调用 - (int)removeEngineMediaStatsObserver:(id<NERtcEngineMediaStatsObserver>)observer ,删除相关 media 统计信息观测器。
  • 调用 - (int)cleanupEngineMediaStatsObserver,清空所有 media 统计信息观测器。

示例代码

objc// 添加添加 media 统计信息观测者
NERtcEngine *coreEngine = [NERtcEngine sharedEngine];
[coreEngine addEngineMediaStatsObserver:<#observer#>];

//////

/**
observer.m 信息观测者实现代理方法
*/

- (void)onRtcStats:(NERtcStats *)stat {
    // 当前通话统计回调
}

- (void)onLocalAudioStat:(NERtcAudioSendStats *)stat {
    // 本地音频流统计信息回调
}

- (void)onRemoteAudioStats:(NSArray<NERtcAudioRecvStats*> *)stats {
    // 本地音频流统计信息回调
}

- (void)onLocalVideoStat:(NERtcVideoSendStats *)stat {
    // 本地视频流统计信息回调
}

- (void)onRemoteVideoStats:(NSArray<NERtcVideoRecvStats*> *)stats {
    // 通话中远端视频流的统计信息回调
}

- (void)onNetworkQuality:(NSArray<NERtcNetworkQualityStats *> *)stats {
    // 通话中每个用户的网络上下行质量同步回调
}

API参考

方法 事件描述
addEngineMediaStatsObserver 添加 media 统计信息观测器
removeEngineMediaStatsObserver 删除 media 统计信息观测器
cleanupEngineMediaStatsObserver 清空 media 统计信息观测器

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