从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32579 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

16 | WebRTC中的数据统计原来这么强大(下)

其他17种子类
RTCOutboundRtpStreamStats
RTCInboundRtpStreamStats
RTCCodecStats
type
timestamp
id
Map类型的RTCStatsReport
绘制比特率和发送包数图形
使用graph.js库
影响数据准确性的因素
SR和RR消息
子类
RTCStats基类
结构
RTCRtpReceiver对象的getStats方法只统计接收相关信息
RTCRtpSender对象的getStats方法只统计发送相关信息
RTCPeerConnection对象的getStats方法获取所有统计信息
使用RTCRtpSender对象和RTCRtpReceiver对象的getStats方法
使用RTCPeerConnection对象的getStats方法
绘制图形
RTCP交换统计信息
RTCStatsReport
区别
获取统计信息
WebRTC中的数据统计

该思维导图由 AI 生成,仅供参考

上一篇文章中我向你介绍了 WebRTC 可以获得哪些统计信息,以及如何使用 RTCPeerConntction 对象的 getStats 方法获取想要的统计信息。
那本文我们在上一篇文章的基础之上,继续对 WebRTC 中的统计信息做进一步的讨论,了解它更为详细的内容。

再论 getStats

现在你已经非常清楚,通过 RTCPeerConnection 对象的 getStats 方法可以很轻松地获取到各种统计信息,比如发了多少包、收了多少包、丢了多少包,等等。但实际上对于收发包这块儿的统计还可以从其他方法获取到,即通过 RTCRtpSender 的 getStats 方法和 RTCRtpReceiver 的 getStats 方法也能获取收发包的统计信息
也就是说,除了 RTCPeerConnection 对象有 getStats 方法外,RTCRtpSender 和 RTCRtpReceiver 对象也有 getStats 方法,只不过它们只能获取到与传输相关的统计信息,而 RTCPeerConnection 还可以获取到其他更多的统计信息。
下面我们就来看一下它们三者之间的区别:
RTCPeerConnection 对象的 getStats 方法获取的是所有的统计信息,除了收发包的统计信息外,还有候选者、证书、编解码器等其他类型的统计信息。
RTCRtpSender 对象的 getStats 方法只统计与发送相关的统计信息。
RTCRtpReceiver 对象的 getStats 方法则只统计与接收相关的统计信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC中的数据统计功能强大且多样化,通过getStats方法和RTCStatsReport类型的信息,用户可以全面了解WebRTC通讯过程中的各种统计数据。除了RTCPeerConnection对象外,RTCRtpSender和RTCRtpReceiver对象也有getStats方法,分别用于获取发送和接收相关的统计信息。通过示例代码对比发现,RTCPeerConnection对象的getStats方法获取的信息要比RTCRtpSender对象的多得多。RTCStatsReport类型的返回值包含了各种统计信息,包括编解码器、RTP流相关的统计信息等。这些信息可以帮助用户了解当前直播过程中支持的编解码器类型、每秒发送的比特率、包数等。此外,文章还介绍了RTCP协议中的SR、RR消息以及如何利用RTCStatsReport中的信息绘制图形,使监控数据更加直观地展示出来。文章还提到了第三方库graph.js,用于绘制各种图形,非常方便实用。在代码实现部分,通过定时器每秒获取一次Report,并更新图形,展示了如何利用WebRTC的统计信息绘制比特率和发送包的图形。整体而言,本文通过介绍WebRTC的数据统计功能以及相关代码实现,为读者提供了全面了解WebRTC通讯过程中的各种统计数据的方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 许童童
    思考题: 不会影响准确性,因为每一次传输都是全量的,丢失只会丢失这一次的值,在下一次又会全量带过来。

    作者回复: 赞!

    2019-08-20
    8
  • npersonal
    老师,我想获取声音等级,目前web端是从webrtc提供的标准中获取,其他端是根据流去算出来的,我觉得这块性能开销很大。但是从webrtc标准api中获取,发现不同端取到的音量等级精度不一致,pc那边给过来的正常声音大概是0.7这种精度,但是android端给过来的是0.00…这种,这种是什么原因导致

    作者回复: 开销还好,精度不一样应该是使用的计算公式不一致造成的,音频level 有不同的理解,你可以到网上查查

    2021-05-29
  • ripple
    一直对sr和rr不太理解,SR 是发送方发的,记录的是 RTP 流从发送到现在一共发了多少包、发送了多少字节数据,以及丢包率是多少。RR 是接收方发的,记录的是 RTP 流从接收到现在一共收了多少包、多少字节的数据等,实际中,发送方也是接收方的哇,譬如A,B,C三个user,A能收到BC的,B能收到AC的,C能收到AB的,然后拿C举例,收到A和B的RR后,然后和自己的SR对比,发现谁丢包严重,就限制谁?发现假如丢包严重,降低码率应该降低A还是B还是C呢?

    作者回复: 从接收方收到反馈后,当然是限制发送发码流。如果是C收到了A和B的 RR,丢包严重的话,它要限制C的发送。

    2020-08-09
  • Benjamin
    李老师,SR 和 RR 这些统计信息,会反馈影响 WebRTC 的通信质量上嘛?

    作者回复: 对的,会根据这些信息,调整发包的速度

    2020-03-25
  • 老师还是昨天问题,在Frefix,IE浏览器上是可以播放的,只是Google Chrome上播放一点就报错,提示视频问题或浏览器某些特征不支持,如果真的是视频问题,这种性象,暂时无法理解!

    作者回复: 你用video 标签播的吗?如果是 video标签各浏览器的实现不一样,在chrome下,浏览器对vp8/vp9支技的更好。你可能通过第三方库来播MP4文件

    2019-08-22
  • 老师,这个问题你遇到吗,能否帮帮我 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'F:/mp4/convert/041.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.76.100 Duration: 00:00:21.04, start: 0.033008, bitrate: 3656 kb/s Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 3653 kb/s, 29.99 fps, 50 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : VideoHandler[h264 @ 00000000028a4d80] Invalid NAL unit 8, skipping. Last message repeated 3 times[h264 @ 00000000028a4d80] concealing 7569 DC, 7569 AC, 7569 MV errors in P frame[h264 @ 00000000028a4d80] illegal short term buffer state detected[h264 @ 00000000028a4d80] mmco: unref short failure

    作者回复: 提示上有这个信息“Invalid NAL unit 8” 说明你的视频数据有问题

    2019-08-21
  • npersonal
    老师,实现语音激励功能webrtc有提供一些支持吗,还是说都是要自己实现(大致思路是不是这样:使用AudioContext去做分析,识别出人声部分,然后去计算人声部分的音量等级去做比较)
    2021-07-08
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部