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字典中查询详细说明.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345