灿哥哥的博客

专注技术,热爱分享

WebRTC的拥塞控制和带宽策略

网络的波动带来的卡顿直接影响着用户的体验,在WebRTC中设计了一套基于延迟和丢包反馈的拥塞机制(GCC)和带宽调节策略来保证延迟、质量和网路速度之间平衡,本文中重点是介绍基于trendline滤波的评估模型。本文来自学霸君资深架构师袁荣喜和萍乡学院辛锋的投稿,并由LiveVideoStack全文...

2018-05-29 14:30:53

阅读数 3357

评论数 1

WebRTC视频JitterBuff

前言 如果网络是理想的,即无丢包、无抖动、低延时,那么接收到一帧完整数据就直接播放,效果一定会非常好。但是实际的网络往往很复杂,尤其是无线网络。如果还是这样直接播放,网络稍微变差,视频就会卡顿,出现马赛克等异常情况。所以,在接收端对接收的数据做一个缓冲是很有必要的。   缓冲一定...

2018-04-24 10:25:34

阅读数 297

评论数 0

WebRTC 基于GCC的拥塞控制(下)

本文在文章[1]的基础上,从源代码实现角度对WebRTC的GCC算法进行分析。主要内容包括: RTCP RR的数据源、报文构造和接收,接收端基于数据包到达延迟的码率估计,发送端码率的计算以及生效于目标模块。 拥塞控制是实时流媒体应用的重要服务质量保证。通过本文和文章[1][2],从数学基础、...

2018-04-04 15:46:16

阅读数 160

评论数 0

WebRTC 基于GCC的拥塞控制(上)

实时流媒体应用的最大特点是实时性,而延迟是实时性的最大敌人。从媒体收发端来讲,媒体数据的处理速度是造成延迟的重要原因;而从传输角度来讲,网络拥塞则是造成延迟的最主要原因。网络拥塞可能造成数据包丢失,也可能造成数据传输时间变长,延迟增大。 拥塞控制是实时流媒体应用质量保证(QoS)的重要手段之...

2018-04-04 15:43:46

阅读数 204

评论数 0

如何真正让小程序,WebRTC和APP互通连麦直播

2017年12月,微信小程序向开发者开放了实时音视频能力,给业内带来广阔的想象空间。连麦直播技术在2016年直播风口中成为视频直播的标配,然而只有在原生的APP上才能保障良好的用户体验。那时候,在微信小程序中无法连麦直播。微信小程序在去年12月宣布开放实时音视频能力,再加上去年6月苹果宣布将支持W...

2018-04-02 17:46:32

阅读数 2734

评论数 0

将WebRTC用于多人音视频通信

WebRTC非常适合点对点(即一对一)通信。 但是,当我与客户讨论超出一对一(即一对多或多对多)的解决方案和服务时,问题就出现了:“我应该采用哪种架构?”。 有些服务提供商希望复用他们网络中的组播支持(我们正在为此尝试做一些实验),有些正在探索基于联播(simulcast)的解决方案,还有一些正在...

2018-04-02 17:11:46

阅读数 1543

评论数 1

WebRTC视频通话中最多能容纳多少用户?

作者 / Tsahi Levent-Levi翻译 / 小极狗只要你想,在WebRTC视频通话中添加从一到一百万的用户都是可以的。当被要求创建一个群组视频通话时,显然,针对该项目应该选择WebRTC技术。这几乎是唯一的选择,而且肯定也是性价比最好的。这时有个很大的问题:单个群组WebRTC视频通话中...

2018-04-02 15:15:46

阅读数 845

评论数 0

WebRTC学习之十:最简单的视频聊天(使用WebRtcVideoEngine2)

        这篇在上篇WebRTC学习之九:摄像头的捕捉和显示 的基础上修改而来。上篇中主要使用了WebRtcVideoEngine2中的WebRtcVideoCapturer类,而本篇中主要使用了WebRtcVideoEngine2中的WebRtcVideoChannel2类。一.环境参考:...

2017-01-17 17:43:45

阅读数 6201

评论数 19

WebRTC学习之九:摄像头的捕捉和显示

较新的WebRTC源码中已经没有了与VoiceEngine结构对应的VidoeEngine了,取而代之的是MeidaEngine。MediaEngine包含了MediaEngineInterface接口及其实现CompositeMediaEngine,CompositeMediaEngine本身也...

2017-01-11 08:58:27

阅读数 7013

评论数 1

WebRTC学习之八:函数的异步执行

WebRTC在asyncinvoker.h和asyncivoker.cpp中实现了函数的异步执行。asyncinvoker.h的注释中给出了一个小例子,本文的学习就是从这个例子开始的。但是这个例子和单元测试代码都只演示了如何让一个函数在子线程中执行,如下所示。 myclass.h #inc...

2017-01-09 12:12:04

阅读数 2463

评论数 4

WebRTC学习之七:精炼的信号和槽机制

关于信号和槽有一个非常精炼的C++实现,作者是Sarah Thompson,该实现只有一个头文件sigslot.h,源码在: http://sigslot.cvs.sourceforge.net/viewvc/sigslot/sigslot/sigslot.h?revision=1.1.1.1&a...

2017-01-05 09:06:52

阅读数 2028

评论数 0

WebRTC学习之六:本地视频采集

1. WebRTC原生视频采集 在介绍视频设备的采集之前,首先要分析一下WebRTC的DeviceManager结构,因为视频采集的抽象接口VideoCapturer的WebRTC原生实现就是通过它来创建的。这个类的功能还包括枚举音视频设备的相关信息等。结构如下: 限于篇幅,该UML中...

2017-01-03 14:08:45

阅读数 2430

评论数 0

WebRTC学习之五:本地音频采集

1. WebRTC原生音频采集 先介绍一下WebRTC中与音频采集貌似相关的接口概念: 结构上看起来是不是和视频Track的结构类似?不过前面提过,如果你以对称的思维,在此结构中找出与视频track相似的采集源和输出源,那就肯定无功而返了,LocalAudioSource对AudioSourc...

2017-01-03 13:59:24

阅读数 1859

评论数 0

WebRTC学习之四:最简单的语音聊天

VoiceEngine中与最简单语音聊天相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver VoiceEngine VoEBase 1.默认使用G.711通过RTP进行全双工的VoIP会话 2...

2016-12-26 21:18:52

阅读数 6071

评论数 3

WebRTC学习之三:录音和播放

VoiceEngine中与录音和播放相关的头文件有五个,如下表所示: 头文件 包含的类 说明 voe_base.h VoiceEngineObserver VoiceEngine VoEBase 1.默认使用G.711通过RTP进行全双工的VoIP会话 2....

2016-12-03 20:06:05

阅读数 7968

评论数 13

WebRTC学习之二:编译(2018年5月更新)

一.准备1.操作系统Win7 64位及以上,必须是64位的。我用的Win10,64位。2.VS版本Visual Studio 2015 Update 3及以上。我用的Visual Studio 2015 Update 3。http://download.microsoft.com/download...

2016-11-26 18:22:44

阅读数 9007

评论数 2

WebRTC学习之一:开篇

一.无插件的实时通讯        想像一下,如果你的手机、电视、电脑都可以通过一个平台进行通信,想像一下,你可以在Web应用中轻松地加入视频聊天和p2p数据分享,这就是WebRTC的愿景。        想试一试吗?WebRTC现在已经被集成到Chrome、Opera和Firefox,在appr...

2016-11-23 17:25:19

阅读数 31764

评论数 6

WebRTC学习资料大全

在学习WebRTC,找了些资料,记录一下,供以后查询。 有些需要翻墙才能看 WebRTC 介绍 官网在这里:https://webrtc.org/。然后这里有一个官方的Getting Started:https://webrtc.org/start/。 Google关于WebRTC的幻灯...

2016-11-08 17:33:28

阅读数 3170

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭