直播数据统计
在音视频直播过程中,RTCLib SDK 提供了实时的数据统计功能,帮助您监控音视频流的质量状态和性能指标。
本文介绍如何获取流状态数据和直播合流音量数据。
流状态数据上报
RTCLib SDK 会每秒上报一次音视频流的详细数据,您可以根据这些数据进行质量提示、状态判断等处理。
通过实现 RCRTCStatusReportDelegate 代理的 didReportStatusForm: 方法,可以获取音视频流的详细统计数据。
接口原型
Objective C
- (void)didReportStatusForm:(RCRTCStatusForm *)form;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
form | RCRTCStatusForm | 音视频流状态统计数据。 |
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
// 设置状态上报代理
[RCRTCEngine sharedInstance].statusReportDelegate = self;
#pragma mark - RCRTCStatusReportDelegate
- (void)didReportStatusForm:(RCRTCStatusForm *)form {
// 处理流状态数据
}
RCRTCStatusForm 属性说明
| 属性 | 类型 | 说明 |
|---|---|---|
cpuUsage | float | CPU 使用率,取值范围:0 ~ 100。 |
cpuUsageOfOS | float | 系统 CPU 使用率,取值范围:0 ~ 100。 |
totalRecvBitRate | float | 接收的所有下行码率,单位:kbps。 |
totalSendBitRate | float | 发送的所有上行码率,单位:kbps。 |
networkType | NSString * | 当前使用的网络类型。 |
rtt | NSInteger | 往返时间,单位:毫秒。 |
ipAddress | NSString * | IP 地址。 |
availableReceiveBandwidth | float | 可接收带宽,单位:kbps。 |
availableSendBandwidth | float | 可发送带宽,单位:kbps。 |
sendStats | NSArray<RCRTCStreamStat *> * | 发送轨道数据,详见 RCRTCStreamStat 属性说明。 |
recvStats | NSArray<RCRTCStreamStat *> * | 接收轨道数据,详见 RCRTCStreamStat 属性说明。 |
RCRTCStreamStat 属性说明
| 属性 | 类型 | 说明 |
|---|---|---|
trackId | NSString * | 音频/视频流 ID。 |
audioLevel | NSInteger | 音频流中的音量 ,视频流中为 0。 |
bitRate | float | 码率,单位:kbps。 |
frameHeight | NSInteger | 视频帧高度,音频流中为 -1。 |
frameWidth | NSInteger | 视频帧宽度,音频流中为 -1。 |
mediaType | NSString * | 媒体类型,音频为 audio,视频为 video。 |
packetLoss | float | 发送丢包率,取值范围:0 ~ 1。 |
rtt | NSInteger | 往返时间,单位:毫秒。 |
frameRate | NSInteger | 视频帧率,音频流中为 -1。 |
jitterReceived | NSInteger | 网络抖动,单位:毫秒。 |
codecName | NSString * | 音频/视频编解码器名称。 |
state | NSInteger | 流是否可用状态,随麦克风开关变化。 - 1:可用- 2:不可用- -1:无法确定 |
直播合流音量上报
从 RTCLib SDK 5.1.11 版本开始,支持在直播模式下实时上报音频合流的声音状态,您可以单独获取每个主播的音量。
当音频合流包含多个主播的音频流时,SDK 会实时上报正在发声的主播音量信息。
接口原型
Objective C
- (void)didReportLiveAudioStatus:(NSArray<RCRTCLiveAudioStatus *> *)audioStatus;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
audioStatus | NSArray<RCRTCLiveAudioStatus *> * | 音频合流状态数组,包含正在发声的主播信息。详见 RCRTCLiveAudioStatus 属性说明。 |
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
#pragma mark - RCRTCStatusReportDelegate
- (void)didReportLiveAudioStatus:(NSArray<RCRTCLiveAudioStatus *> *)audioStatus {
}
RCRTCLiveAudioStatus 属性说明
| 属性 | 类型 | 说明 |
|---|---|---|
userId | NSString * | 用户 ID。 |
streamId | NSString * | 音频流 ID。 |
audioLevel | NSInteger | 音量大小,取值范围:0 ~ 9,数值越大表示音量越高。 |
使用场景说明
例如,当前音频合流由用户 A、B、C 三个主播的音频流组成,此时只有用户 A 在发声,SDK 会通过 didReportLiveAudioStatus: 回调返回包含用户 A 音量信息的 audioStatus 数组。