Android WebRtc中RtcStatusReport参数含义

RtcStatsReport比较常用的type

  • googCertificate
  • googCertificate
  • googCandidatePare
  • localCandidate
  • remoteCandidate
  • ssrc
  • googTrack
  • googLibjingleSession
  • VideoBWE

ssrc

每一个发送或接受的音频或视频Track都有一个对应的ssrc报告,其中包含有:

  • mediaType 媒体类型video/audio
  • packetsSent 累计发送的数据包数
  • googJitterReceived 接收到多少抖动
  • id 后缀用来区分是发送或接受的ssrc,发送: _send,接收: _recv
  • googTrackId 音频或视频TrackId
  • googRtt 全称为:Round-trip time,表示的是请求的往返时间,是发送端从接收端发送过来的RTCP中得到时间戳通过计算得到往返时延
  • transportId 指向传输RTP流的部分,通常于音频或视频流的transportId是一样的
  • googCodecName 编码器的名称,音频一般是opus,视频一般为:VP8、VP9、H264
  • codecImplementationName 具体实现编码器的名称,一般MediaCodec等
  • audioInputLevel 发送端采集的音频能量大小
  • audioOutputLevel 扬声器播放的音量大小
  • bytesSent 累计发送数据的字节数
  • framesEncoded 累计编码出的视频帧数量
  • packetsLost 累计丢包数量,对于发送端从接收端发送过来的RTCP Receiver Report中得到累计丢包数量,可以和googNacksReceived数据进行对照,对于接收端来说,丢包数量是本地测量出来的。
  • googNacksReceived 发送端收到的重传包请求(nack)数量,可以和packetsLost进行对照
  • qpSum 全称为:Quantization Parameter,发送端编码出的带有量化参数(QP)值的帧的数量,一般来说,这个数字越高,视频轨道压缩的越严重,需要注意,QP值可能因编码器不同而不同,所以此值仅在与同一编码器进行比较时可能有用
  • googAdaptationChanges 发送端因为CPU的负载变化导致的分辨率变高或变低的次数,需要设置googCpuOveruseDetection
  • googAvgEncodeMs 发送端平均编码时间,值越小越好
  • googBandwidthLimitedResolution 是否因为宽带受限而降低发送的视频分辨率
  • googCpuLimitedResolution 是否因为CPU不足而降低发送的视频分辨率
  • googEncodeUsagePercent 发送端(平均每帧编码时间)/(平均每帧采集时间),主要是用来反映编码效率
  • googFirsReceived 发送端收到的关键帧请求数量,Fir全称为:Full Intra Request,一般来说在video conference模式下,有新的参与者进来会发出
  • *googPlisReceived 发送端收到的古建筑请求数量, pli全称为:Picture Loss Indication,一般来说接码失败时会发出
  • googFrameHeightSent 发送端发送的视频分辨率高度,根据当前网络会进行动态调整
  • googFrameWidthSent 发送端发送的视频分辨率宽度,根据当前网络会动态调整
  • googFrameRateInput 发送端设置的初始帧率
  • googFrameRateSent 发送端实际发送的帧率,根据当前网络会动态调整
  • googFrameHeightReceived 接收到的视频分辨率高度
  • googFrameWidthReceived 接收到的视频分辨率宽度
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: ssrc_2694901265_recv, type: ssrc, timestamp: 1.557741902171555E12, values: [bytesReceived: 0], [codecImplementationName: MediaCodec], [framesDecoded: 0], [mediaType: video], [packetsLost: 0], [packetsReceived: 0], [ssrc: 2694901265], [transportId: Channel-audio-1], [googCaptureStartNtpTimeMs: 0], [googCodecName: ], [googCurrentDelayMs: 0], [googDecodeMs: 0], [googFirsSent: 0], [googFrameHeightReceived: 0], [googFrameRateDecoded: 0], [googFrameRateOutput: 0], [googFrameRateReceived: 0], [googFrameWidthReceived: 0], [googJitterBufferMs: 0], [googMaxDecodeMs: 0], [googMinPlayoutDelayMs: 0], [googNacksSent: 0], [googPlisSent: 0], [googRenderDelayMs: 10], [googTargetDelayMs: 0], [googTrackId: 18811598131f9451106c87938ee_video], "
}
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: ssrc_1146199825_send, type: ssrc, timestamp: 1.557741902171555E12, values: [audioInputLevel: 13], [bytesSent: 21912], [mediaType: audio], [packetsLost: 49], [packetsSent: 240], [ssrc: 1146199825], [transportId: Channel-audio-1], [googCodecName: opus], [googEchoCancellationReturnLoss: -100], [googEchoCancellationReturnLossEnhancement: -100], [googJitterReceived: 59], [googResidualEchoLikelihood: 0.00511946], [googResidualEchoLikelihoodRecentMax: 0.00511946], [googRtt: 10], [googTrackId: 13552463341d2db1797a13993cd_audio], [googTypingNoiseState: false], "
}

VideoBwe

包含有关视频宽带相关信息,一般在分析视频质量不好的时候,可以先查看这个报告中的发送和接收的可用宽带信息

  • googActualEncBitrate 视频编码器实际输出的码率,一般和目标码率是匹配的
  • googAvailableReceiveBandwidth 接收视频数据可用的宽带
  • googAvailableSendBandwidth 发送视频数据可用的宽带
  • googBucketDelay Google为处理大数据速率的策略表示,一般是很小的数值
  • googRetransmitBitrate 如果RTX被使用的话,表示重传的码率,此数据通常代表丢包率
  • googTargetEncBitrate 视频编码的目标码率
  • googTansmitBitrate 实际发送传输的码率,如果此数值与googActualEncBitrate有较大的出入,可能是受fec(前向纠错)影响
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: bweforvideo, type: VideoBwe, timestamp: 1.557741902171555E12, values: [googActualEncBitrate: 523079], [googAvailableReceiveBandwidth: 0], [googAvailableSendBandwidth: 1000000], [googBucketDelay: 17], [googRetransmitBitrate: 7034896], [googTargetEncBitrate: 500000], [googTransmitBitrate: 1124147], "
}

localCandidate和remoteCandidate

主要描述本地Candidate和远端Candidate,主要包括:ip地址、端口号、以及候选项类型、网络类型、传输协议类型等,详细描述可以参考具体规范描述

  • candidateType: ICE候选项类型可分为:
    • host 客户端从本机网络接口上获取的本机地址
    • srflx 通过STUN服务器反射后获取的Server-reflexive地址(内网地址被NAT映射后的地址)
    • prflx 在TUN Server上为客户端分配的中继地址
    • relay 中继地址
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: Cand-7vpmljXh, type: localcandidate, timestamp: 1.557741900901133E12, values: [ipAddress: 111.200.55.10], [networkType: wlan], [portNumber: 26072], [priority: 1853824767], [transport: udp], [candidateType: peerreflexive], "
}
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: Cand-WoA+01gx, type: remotecandidate, timestamp: 1.557741900901133E12, values: [ipAddress: 39.97.130.104], [portNumber: 50002], [priority: 1], [transport: udp], [candidateType: host], "
}

googComponent

googComponent相当于认证数据和连接之间的关系,包含了一个指向当前活跃的Candidate和有关用于DTLS和SRTP加密的相关信息

{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: Channel-audio-1, type: googComponent, timestamp: 1.557741903177303E12, values: [selectedCandidatePairId: Conn-audio-1-0], [googComponent: 1], "
}

googCandidatePair

googCandidatePair是对一对ICE候选项的描述,RTP通道相关信息,包括以下信息

  • bytesReceived 接收的字节数
  • bytesReceived 发送的字节数
  • packetsSent 发送的数据包数
  • 注意 以上的发送和接收的数据包以及字节数总数都是rtp的数据
  • requestsSent、responsesSent、requestsReceived、responsesReceived STUN请求数和应答数,具体查看官方文档
  • googActiveConnection 判断当前的连接是否活跃, 对等的规范可以在这里找到
  • googRtt 是最近的STUN请求的往返时间
  • googLocalAddress 本地的候选地址
  • *googRemoteAddress ** 远端的候选地址
  • googTransportType 传输通道类型,一般为UDP
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: Conn-audio-1-0, type: googCandidatePair, timestamp: 1.557741904181686E12, values: [googActiveConnection: true], [bytesReceived: 41505], [bytesSent: 785302], [packetsSent: 1180], [googReadable: true], [requestsSent: 6], [consentRequestsSent: 1], [responsesSent: 0], [requestsReceived: 0], [responsesReceived: 6], [googChannelId: Channel-audio-1], [googLocalAddress: 111.200.55.10:26072], [localCandidateId: Cand-7vpmljXh], [googLocalCandidateType: prflx], [googRemoteAddress: 39.97.130.104:50002], [remoteCandidateId: Cand-WoA+01gx], [googRemoteCandidateType: local], [googRtt: 539], [packetsDiscardedOnSend: 0], [googTransportType: udp], [googWritable: true], "
}

googTrack与googLibjingleSession

这两种Type没有包含什么信息,只是包含了TrackId等信息.

{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: googTrack_13552463341d2db1797a13993cd_audio, type: googTrack, timestamp: 0.0, values: [googTrackId: googTrack_13552463341d2db1797a13993cd_audio], "
}
{
    "ptid": "32093-24769",
    "reportStats-Thread": "id: googLibjingleSession_3733336158732609836, type: googLibjingleSession, timestamp: 1.557741904181686E12, values: [googInitiator: true], "
}

googCertificate

googCertificate 包含了一些有关本端和对端所使用的DTL证书信息,以及指纹和哈希算法,可以在RTCCertificateStats字典中查询详细说明.

你可能感兴趣的:(Android WebRtc中RtcStatusReport参数含义)