从0打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
立即订阅
2827 人已学习
课程目录
已完结 40 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 5G的到来将会为音视频插上飞翔的翅膀
免费
WebRTC 1对1通话 (23讲)
01 | 原来通过浏览器访问摄像头这么容易
02 | 如何通过WebRTC进行音视频设备检测呢?
03 | 如何使用浏览器给自己拍照呢?
04 | 可以把采集到的音视频数据录制下来吗?
05 | 原来浏览器还能抓取桌面?
06 | WebRTC中的RTP及RTCP详解
07 | 你竟然不知道SDP?它可是WebRTC的驱动核心!
08 | 有话好商量,论媒体协商
09 | 让我们揭开WebRTC建立连接的神秘面纱
10 | WebRTC NAT穿越原理
11 | 如何通过Node.js实现一套最简单的信令系统?
12 | RTCPeerConnection:音视频实时通讯的核心
13 | 在WebRTC中如何控制传输速率呢?
14 | 如何打开/关闭音视频?
15 | WebRTC中的数据统计原来这么强大(上)
16 | WebRTC中的数据统计原来这么强大(下)
17 | 如何使用Canvas绘制统计图表(上)?
18 | 如何使用Canvas绘制统计图表(下)?
19 | WebRTC能不能进行文本聊天呢?
20 | 原来WebRTC还可以实时传输文件?
21 | 如何保证数据传输的安全(上)?
22 | 如何保证数据传输的安全(下)?
23 | 实战演练:通过WebRTC实现一个1对1音视频实时直播系统
WebRTC多人音视频实时通话 (7讲)
24 | 多人音视频实时通讯是怎样的架构?
25 | 那些常见的流媒体服务器,你该选择谁?
26 | 为什么编译Medooze Server这么难?
27 | 让我们一起探索Medooze的具体实现吧(上)
28 | 让我们一起探索Medooze的具体实现吧(下)
29 | 如何使用Medooze 实现多方视频会议?
30 | 实战演练:通过WebRTC实现多人音视频实时互动直播系统
支持上万人同时在线的直播系统 (8讲)
31 | 一对多直播系统RTMP/HLS,你该选哪个?
32 | HLS:实现一对多直播系统的必备协议
33 | FLV:适合录制的多媒体格式
34 | 如何使用Nginx搭建最简单的直播服务器?
35 | 如何构建云端一对多直播系统?
36 | 如何使用 flv.js 播放 FLV 多媒体文件呢?
37 | 如何使用 video.js 播放多媒体文件?
38 | 实战推演:带你实现一个支持万人同时在线的直播系统
结束语 (1讲)
结束语 | 路漫漫其修远兮,吾将上下而求索
从0打造音视频直播系统
登录|注册

06 | WebRTC中的RTP及RTCP详解

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

UDP 还是 TCP?

如果抛开 WebRTC,让你自己实现一套实时互动直播系统,在选择网络传输协议时,你会选择使用 UDP 协议还是 TCP 协议呢?
这个问题在 2011 年至 2012 年一直是一件困扰着我们整个团队的大事儿,因为当时在国内很少有用 UDP 作为底层传输协议的。UDP 虽然传输快,但不可靠,尤其是在用户的网络质量很差的情况下,基本无法保障音视频的服务质量。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0打造音视频直播系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • John
    這篇特別重要 精華中的精華

    作者回复: 谢谢〜

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

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

    2019-08-20
    1
  • 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
    6
    1
  • 大恒数据
    老师,请问在RTCP协议中,客户端在接收到SR后,何时发送RR?如何计算这个时间点呢?

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

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

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

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

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

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

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

    2019-07-27
收起评论
7
返回
顶部