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

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

抖动
延迟
丢包
分辨率与帧率
传输速率
带宽大小
网络质量
通过SDP控制
通过压缩码率控制
对音视频服务质量的影响
控制传输速率的方法
传输速率的重要性
WebRTC中控制传输速率

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

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

在 WebRTC 处理过程中的位置

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

音视频服务质量

像上面所说的,虽然通过 RTCPeerConnection 在端与端之间建立连接后,音视频数据可以互通了,但你还应对传输速率有所控制。之所以要对传输速率进行控制,主要是为了提高音视频服务质量。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC中如何控制传输速率?本文介绍了通过RTCPeerConnection来控制音视频数据的传输速率。传输速率的控制对音视频服务质量有重要影响,因为带宽限制可能导致通话质量下降。文章还介绍了影响音视频服务质量的因素,包括网络质量和数据,以及物理链路质量、带宽大小和传输速率对服务质量的影响。此外,文章还讨论了音视频压缩码率和传输控制码率对传输速率的影响。通过本文,读者可以了解到在WebRTC中如何控制传输速率以提高音视频服务质量。 在WebRTC中,可以通过压缩码率和控制传输速度来控制传输速率。通过调整视频发送者的参数,特别是maxBitrate属性,可以有效控制某一路流的传输速率。需要注意的是,WebRTC只允许使用压缩码率的方式来主动控制速率,而传输速率的控制是由WebRTC在底层自行处理的。此外,文章还提到了通过SDP来控制传输速率的方法。 总的来说,本文通过简单的代码示例和详细的分析,向读者介绍了在WebRTC中控制传输速率的方法,以及影响音视频服务质量的重要因素。读者可以通过本文快速了解WebRTC中传输速率的控制方式,以及对音视频服务质量产生影响的因素,为提高音视频通话质量提供了有益的参考。

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

全部留言(27)

  • 最新
  • 精选
  • 笨小孩
    因为在传输数据之前是要将原始音视频数据进行压缩的,在同一个 GOP(Group Of Picture)中,除了 I/IDR 帧外,B 帧和 P 帧的数据量是非常小的。 -- 是说压缩后会变成gop一个单位吗?这个gop没看懂

    作者回复: GOP 是一组帧,按25帧/秒,你在摄像头前停留一秒可以能没有做任务动作,那么摄像头就采集了 25帧一模一样的图片,这 25帧图片的相关系是不是很大呢?是不是只要保存一长完整的图片然后再保存每一帧图片之间的差异就会大在减少数据量呢?人们人为的将图片相关系比较大的一堆图像划分为一组,这样就可以进行压缩了。这就是 GOP的概念。

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

    作者回复: 没错!

    2019-11-25
    5
  • Geek_91a5bd
    通过媒体描述字段进行控制,如a=rtpmap:103 ISAC/16000,即是控制音频的采样率=16000

    作者回复: 是的

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

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

    2019-08-13
    1
  • Geek_066e6b
    老师,通过getUserMedia设置的是采集的分辨率,还是编码后的分辨率呢?如果不是编码后分辨率,怎么设置呢?最后,还想咨询下,如果想同时支持上行多条不同分辨率的视频流,我们该怎么去控制呢?

    作者回复: getUserMediaAPI设置的分辨率既是采集分辨率也是编码分辨率。 在webrtc中可以通过simulcast来实现多条不同分辨率的视频流,这个你可以到网上搜索一下。

    2020-06-11
  • Desmond
    如果涉及到无线传输的话,物理传输带宽变化很快,请问WebRTC有办法测量到当前的物理带宽吗?

    作者回复: 可以

    2020-03-30
  • Benjamin
    还是一直好奇 SDP 控制的问题,SDP 协商控制连接完成前就做好了。 在音视频通信中,如何再次使用 SDP 控制呢?断开一次,重新相互投递 offer ?

    作者回复: 是的,重连时要重新进行媒体协商

    2020-03-25
  • 李宁
    老师,请教两个问题: 1、怎么得到当前物理链路质量的信息(丢包率、延迟、抖动) 2、帧率和延迟有没有关系,如果没有关系,是否需要根据当前延迟状况动态调节帧率

    作者回复: 通过RTCP协议来检测链路质量。帧率与延迟关系不大。延迟是因为你的网终带宽与音视频流大小不匹配。也就是说小于音视频流的大小。解决办法是减少流量,减少流量的方式有很多,帧率与延迟的关系不是特别大,实际上分辨率才是最大的。

    2020-01-25
  • 蔡林
    一对一场景中,二者是通过点到点的方式连接的,中间没有经过服务器的中转对音视频流进行中转,流的质量完全依赖于发送端和接收端本地出口的网络质量,请问老师我的理解对吗?

    作者回复: 是的

    2019-12-21
  • 天天
    码率和压缩码率是同一个概念吗?

    作者回复: 对的,这里的码率是压缩后的传输码率!

    2019-12-11
收起评论
显示
设置
留言
27
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部