从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打造音视频直播系统
登录|注册

13 | 在WebRTC中如何控制传输速率呢?

李超 2019-08-13
在上一篇《12 | RTCPeerConnection:音视频实时通讯的核心》一文中,我向你介绍了 RTCPeerConnection 对象是如何在端与端之间建立连接的,以及音视频数据又是如何通过它进行传输的。而本文则更进一步,向你介绍如何使用 RTCPeerConnection 来控制音视频数据的传输速率。
通过 RTCPeerConnection 进行传输速率的控制实际上还是蛮简单的一件事儿,但在学习相关知识的时候,你不仅要能知其然,还要知其所以然。对于本文来讲,就是你不但要学习如何控制传输速率,同时还应该清楚为什么要对传输速率进行控制。
其实,之所以要进行传输速率的控制,是因为它会对音视频服务质量产生比较大的影响,对于音视频服务质量这部分知识,接下来我就与你一起做详细探讨。

在 WebRTC 处理过程中的位置

在此之前,我们依旧先来看看本文的内容在整个 WebRTC 处理过程中的位置。
WebRTC 处理过程图
通过上图你可以知道,本文所讲的内容仍然属于传输的范畴。

音视频服务质量

像上面所说的,虽然通过 RTCPeerConnection 在端与端之间建立连接后,音视频数据可以互通了,但你还应对传输速率有所控制。之所以要对传输速率进行控制,主要是为了提高音视频服务质量。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0打造音视频直播系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • 刘丹
    senders.forEach( sender => {
      if(sender && sender.track.kind === 'video'){ // 找到视频的 sender
          vsender = sender;
      }
    });
    如果有多个sender符合 sender.track.kind === 'video' ,那么只有最后一个sender被处理?

    作者回复: 这里只是一个例子,一般情况下,一个客户端只有一路视频。

    2019-08-13
    1
  • 伟龙
    码率和压缩码率是同一个概念吗?
    2019-12-11
  • SherwinFeng
    这样理解是不是对的呢?
    ①码率分为音视频压缩码率和传输控制码率;
    ②由于网络质量条件是不可控的(物理链路的质量、带宽的大小、传输速率的控制),所以webRTC只能通过对数据进行控制,让单位时间内发送的数据量降下来,那么可以增加音视频压缩码率或降低传输控制码率
    增加音视频压缩码率,可以直接对SDP中的sample rate/采样率(就是帧率吗)进行控制以减少数据大小,还可以降低分辨度(这些都是有损压缩,即压缩过程不可逆),这些我们可以主动控制的。
    降低传输控制码率,指的是不对源数据进行任何处理,而是强行降低发包速度,这可能会造成严重延迟,因此这个是webRTC自己控制的。

    而对于用户来说,我们只要知道通过maxBitrate来控制码率即可

    作者回复: 没错!

    2019-11-25
  • 天一
    老师,你好 ,代码中的
    key : fs.readFileSync('./cert/1557605_www.learningrtc.cn.key'),
    cert : fs.readFileSync('./cert/1557605_www.learningrtc.cn.pem')
    这些 key 和 pem 哪里得到?

    作者回复: 自己购买一个域名,可以免费申请试用一年的https。当然你还需要有台云主机,这样才能将域名解析到这台详尽主机上。

    2019-11-06
  • Derek
    传输信道的充分利用是由webrtc内部控制。但webrtc是否会反馈给应用层,来让应用层调整编码码率,以适应当前的信道状况?如果是,是否就是通过这个maxbitrate参数调节?

    作者回复: 当然可以!

    2019-09-15
  • 诸葛亮了
    怎么样设置能保证接收端的视频分辨率为720p呢?

    作者回复: 采集的分辨率与编码的分辨率都设置成 720P 就可以了

    2019-08-20
  • tommy_zhang
    m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127
    c=IN IP4 0.0.0.0
    b=AS:500
    老师好,在android端我修改SDP,添加了b=AS:500,带宽没有限制住。是什么原因?

    作者回复: 不同的分辨率有最低码流,如果低于这个值也是不行的

    2019-08-16
  • tommy_zhang
    我在android端,在SDP中添加b=AS:500,带宽没有限制住。m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127
    c=IN IP4 0.0.0.0
    b=AS:500
    2019-08-16
  • 诸葛亮了
    怎样能保证分辨率保持不变呢

    作者回复: 分辨率设置好后,如果你不主动改变它,它一直都不会变

    2019-08-16
  • 鼠辈
    也就是说 1M 带宽实际每秒钟只能传输 128K 个 Byte。应该是125吧

    作者回复: 是 128K , 1Mbit = 1024Kbit=1024/8 KByte= 128KByte

    2019-08-15
  • 诸葛亮了
    在 3.传输速率 下有这么一句话“当然,如果你的压缩码率本来就很小,比如每秒钟只有 500kb...”。当中的“如果你的压缩码率本来就很小”是不是应该是“如果你的传输码率本来就跟小”啊?

    作者回复: 是压缩码率,压缩码率小代表的数据源小

    2019-08-14
    1
  • hao11111205
    通过 SDP 来控制传输速率,是否可以通过修改SDP里的采样率来实现?

    作者回复: 修改采样率也等于是将源的大小变小,也起到了控制传输速率的效果,当分辨率太大,压缩码率下不来的时间就需要降分辨率

    2019-08-14
  • 许童童
    能否这样理解,码率越大,视频越清晰。

    作者回复: 是的

    2019-08-13
    2
收起评论
13
返回
顶部