跳到主要内容

直播数据统计

在音视频直播过程中,RTCLib SDK 提供了实时的数据统计功能,帮助您监控音视频流的质量状态和性能指标。

本文介绍如何获取流状态数据和直播合流音量数据。

流状态数据上报

RTCLib SDK 会每秒上报一次音视频流的详细数据,您可以根据这些数据进行质量提示、状态判断等处理。

通过实现 RCRTCStatusReportDelegate 代理的 didReportStatusForm: 方法,可以获取音视频流的详细统计数据。

接口原型

Objective C
- (void)didReportStatusForm:(RCRTCStatusForm *)form;

参数说明

参数类型说明
formRCRTCStatusForm音视频流状态统计数据。

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

// 设置状态上报代理
[RCRTCEngine sharedInstance].statusReportDelegate = self;

#pragma mark - RCRTCStatusReportDelegate

- (void)didReportStatusForm:(RCRTCStatusForm *)form {
// 处理流状态数据

}

RCRTCStatusForm 属性说明

属性类型说明
cpuUsagefloatCPU 使用率,取值范围:0 ~ 100。
cpuUsageOfOSfloat系统 CPU 使用率,取值范围:0 ~ 100。
totalRecvBitRatefloat接收的所有下行码率,单位:kbps。
totalSendBitRatefloat发送的所有上行码率,单位:kbps。
networkTypeNSString *当前使用的网络类型。
rttNSInteger往返时间,单位:毫秒。
ipAddressNSString *IP 地址。
availableReceiveBandwidthfloat可接收带宽,单位:kbps。
availableSendBandwidthfloat可发送带宽,单位:kbps。
sendStatsNSArray<RCRTCStreamStat *> *发送轨道数据,详见 RCRTCStreamStat 属性说明
recvStatsNSArray<RCRTCStreamStat *> *接收轨道数据,详见 RCRTCStreamStat 属性说明

RCRTCStreamStat 属性说明

属性类型说明
trackIdNSString *音频/视频流 ID。
audioLevelNSInteger音频流中的音量,视频流中为 0。
bitRatefloat码率,单位:kbps。
frameHeightNSInteger视频帧高度,音频流中为 -1。
frameWidthNSInteger视频帧宽度,音频流中为 -1。
mediaTypeNSString *媒体类型,音频为 audio,视频为 video
packetLossfloat发送丢包率,取值范围:0 ~ 1。
rttNSInteger往返时间,单位:毫秒。
frameRateNSInteger视频帧率,音频流中为 -1。
jitterReceivedNSInteger网络抖动,单位:毫秒。
codecNameNSString *音频/视频编解码器名称。
stateNSInteger流是否可用状态,随麦克风开关变化。
- 1:可用
- 2:不可用
- -1:无法确定

直播合流音量上报

从 RTCLib SDK 5.1.11 版本开始,支持在直播模式下实时上报音频合流的声音状态,您可以单独获取每个主播的音量。

当音频合流包含多个主播的音频流时,SDK 会实时上报正在发声的主播音量信息。

接口原型

Objective C
- (void)didReportLiveAudioStatus:(NSArray<RCRTCLiveAudioStatus *> *)audioStatus;

参数说明

参数类型说明
audioStatusNSArray<RCRTCLiveAudioStatus *> *音频合流状态数组,包含正在发声的主播信息。详见 RCRTCLiveAudioStatus 属性说明

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

#pragma mark - RCRTCStatusReportDelegate

- (void)didReportLiveAudioStatus:(NSArray<RCRTCLiveAudioStatus *> *)audioStatus {

}

RCRTCLiveAudioStatus 属性说明

属性类型说明
userIdNSString *用户 ID。
streamIdNSString *音频流 ID。
audioLevelNSInteger音量大小,取值范围:0 ~ 9,数值越大表示音量越高。

使用场景说明

例如,当前音频合流由用户 A、B、C 三个主播的音频流组成,此时只有用户 A 在发声,SDK 会通过 didReportLiveAudioStatus: 回调返回包含用户 A 音量信息的 audioStatus 数组。