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

06 | WebRTC中的RTP及RTCP详解

Report block
Sender info
Header
重传机制
可靠性
不可靠性
传输速度
FIR报文
RTCP报文类型
SR报文
RR和SR报文
丢包、乱序、抖动问题
Payload Type
时间戳
序号
TCP
UDP
RTCP PT类型
RTCP协议头
RTP协议头
RTCP数据包丢失的影响
RTCP协议
RTP协议
实时互动直播系统
基础
底层代码
原理
底层代码
好东西
宝库
参考
思考时间
RTP/RTCP
UDP vs TCP
学习WebRTC
WebRTC
WebRTC中的RTP及RTCP详解
参考文章

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

可以毫不夸张地说,WebRTC 是一个 “宝库”,它里面有各种各样的 “好东西”。无论你从事什么行业,几乎都可以从它里边吸取能量。
在学习 WebRTC 时,你不光要学习如何使用它,还应该多去看它底层的代码,多去了解它都能做些什么,争取对它的原理和使用都了然于心。如此一来,当遇到某个恰当的时机,你就可以从 WebRTC 库中抽取一点“精髓”放到你自己的项目中,让你的项目大放异彩。
比如,你是搞音频的,你就可以从 WebRTC 中提取 3A(AEC、AGC、ANC)的算法用到自己的项目中,这些算法可是目前世界上最顶级处理音频的算法;如果你是搞网络的,网络带宽的评估、平滑处理、各种网络协议的实现在 WebRTC 中真是应有尽有,你完全可以从中抽取你想用的。
鉴于 WebRTC 的强大“光环”,所以本文我将向你讲解学习 WebRTC 时你不得不知道的几个与网络相关的基本知识,让你在前期就能夯实基础。

UDP 还是 TCP?

如果抛开 WebRTC,让你自己实现一套实时互动直播系统,在选择网络传输协议时,你会选择使用 UDP 协议还是 TCP 协议呢?
这个问题在 2011 年至 2012 年一直是一件困扰着我们整个团队的大事儿,因为当时在国内很少有用 UDP 作为底层传输协议的。UDP 虽然传输快,但不可靠,尤其是在用户的网络质量很差的情况下,基本无法保障音视频的服务质量。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC中的RTP及RTCP详解 WebRTC是一个强大的工具,提供了丰富的功能和技术,对于从事音频、视频和网络行业的人来说都具有巨大的吸引力。本文深入探讨了WebRTC中的RTP和RTCP协议,以及在实时互动直播系统中选择UDP协议的重要性。 文章首先强调了在实现实时互动直播系统时必须使用UDP协议的重要性,因为TCP在极端网络情况下可能导致严重的延迟,而实时互动直播系统无法容忍这样的延迟。此外,文章还介绍了RTP协议的重要性,指出在实时互动直播系统中,音视频数据流并不直接交给UDP传输,而是先加上RTP头再进行传输。RTP协议中的字段含义和示例也得到了详细解释,帮助读者更好地理解RTP协议的作用和实际应用。 另外,文章还介绍了RTCP协议的作用,通过RR和SR报文的交换,各端可以了解自己的网络质量情况。此外,还介绍了RTCP中的其他报文,如FIR报文的重要性和作用。最后,文章提到了在WebRTC中,RTP/RTCP只是众多协议中的比较重要的两个,还有SRTP/SRTCP、DTLS、STUN/TURN协议等。 总的来说,本文通过深入讨论WebRTC中的RTP和RTCP协议,为读者提供了对实时互动直播系统中网络传输协议选择和RTP协议的重要性有了更深入的了解。

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

全部留言(16)

  • 最新
  • 精选
  • Dump
    老师,请教一下,使用UDP的确可以解决网络不好重传导致的延时问题,RTP协议解决了数据包组装的问题,而RTCP只是用于了解发送端和接收端的网络质量,那么UDP导致的丢包问题是如何解决的呢? 另外,传输过程的视频数据,关键帧间隔是小点好呢还是大点好,从我们直播使用情况来看,关键帧间隔如果设大,貌似容易出现跳帧的问题,我的理解是P、B帧数据丢失引起,但是I帧就不容易丢吗?不太理解其中的原理。问题有点长,还望了解解答。多谢了

    作者回复: 1. UDP 丢包通过 RTCP 的 NACK 来解决 2. 关键帧一般 1.5 秒一个关键帧就好了。 3. I帧/B帧/P帧的丢包概率是一样的,没什么区别

    2019-08-20
    14
  • scorpio
    老师您好,我们现在做的项目是从NVR推流到Web端展示实时视频的项目。实现方式是通过ffmpeg获取NVR流,并将rtsp转成rtmp,推向nginx;nginx作为流服务器; 遇到的问题: 1、cpu消耗高,i7-8700 cpu @3.2Ghz 3.19Ghz,8G内存配置 同时最高只能推11个视频流 2、视频延迟会随着推流的时长,延迟越来越来,一开始的时候就1-2秒的延迟 希望老师提供下解决思路,怎样能增加推流的数量,怎样降低延迟

    作者回复: ffmpeg可以做一些优化,比如使用 GPU 加速,不知你做了没?但也提高不了太多。另外,使用rtmp延迟很难下来,这是由 RTMP/TCP的网络特性造成的,你能解决的只是你自己的逻辑上看是否可以优化,但本质改来了。在后面的文章中我有介绍为什么不能用 RTMP/TCP 做实时传输

    2019-07-29
    8
    8
  • John
    這篇特別重要 精華中的精華

    作者回复: 谢谢〜

    2019-08-29
    4
  • smilekaka
    老师您好,我想请教一个我们在使用WebRTC时遇到的一个问题,有一个网络环境明明网速很快,测试网速时也没发现丢包的情况,但是使用WebRTC连接时,一直提示ICE连接失败,而我们同时用另一个网络访问时,网速很慢都能连接成功,并能拉取到对端的画面,这是什么原因?

    作者回复: 是与服务端连接失败还是对端连接失败?看看地址是否正确?

    2019-07-28
    4
    2
  • Geek_leo长沙
    老师你好,我现在可以实现wifi不同局域网下的连接,但是4g设备,不管移动还是联通或者电信互联,怎么都看不到对方的画面 不知道啥情况。能帮分析一下吗

    作者回复: 因为你没有配置 TURN 服务

    2019-07-27
    2
  • Geek_82d1fd
    老师,请教一个问题,UDP有发送缓冲和接收缓冲吗?

    作者回复: 有啊!webrtc底层的jiterbuffer就是

    2020-04-11
    1
  • XiaoLong
    在读RFC-3550时,关于RTCP发送者信息中NTP timestamp和RTP timestamp的区别和作用不是很理解,希望老师能够指导,谢谢。

    作者回复: NTP 时间是全世界的统一时间。RTP 时间是一个相对时间。

    2020-01-20
    1
  • 大恒
    老师,请问在RTCP协议中,客户端在接收到SR后,何时发送RR?如何计算这个时间点呢?

    作者回复: 这就涉及到高级的 webrtc的核心算法问题了,你自己可以研究一下,这块的知识比较复杂,本专栏中不会讲这方面的知识。我会在其它课中讲,你可以关注我后面的课。

    2019-07-29
    1
  • Sunney
    老师您好,我想咨询一下对于网络摄像头在页面展示,有什么比较好的方式? 还有一般视频流在消息队列一般是如何传输的?

    作者回复: 网络摄像头是指什么?没太明白你的意思,当音视频流被采集到之后,都可以通过 video 标签在页面上展示出来。视频流不用消息队列,如MQ 之类的,音视频要调性处理,MQ 不是做这个的。

    2019-07-29
    4
    1
  • XiaoLong
    “PT=98 是视频数据,PT=111 是音频数据”,在rfc3551-《RTP Pro le for Audio and Video Conferences with Minimal Control》中只说明PT:96-127为dynamic,但并没有指明具体是哪种类型。请问老师,哪里可以看到PT:96-127具体的定义,谢谢!

    作者回复: 在 SDP 里描述的

    2020-01-19
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部