自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 问答 (1)
  • 收藏
  • 关注

原创 webrtc和fec-离成功中间的坑

音视频质量优化真的是博大精深。fec之前的流程已经分析过了,但是距离从P2P改成SVC模式的路还是比较长的,RR中的fraction_loss作为fec的基础参数,并不一定会作为fec的冗余度,其中是有rtt的check,在media_optil里面,会根据rtt判断是否启用fec(rtt>20ms),这是合理的,因为如果rtt特别短说明网络情况特别好,在这个条件下选择nack不使用...

2020-04-24 20:34:50 1032

原创 WebRTC中看不懂的C++

abs1库中的optional衍生于std::OptionalWebRTC在AudioOptions中使用可以认为其为一个bool+本身的Template存在值,其Engaged就是True不存在则为False

2019-12-02 10:44:46 887

原创 WebRTC学习DAY10(ULPFEC)

开关特殊点:1.对RTP包是否启用保护的判定条件bool protect_packet = temporal_id == 0 || temporal_id == kNoTemporalIdx;packet->HasExtension<VideoTimingExtension>()2.FieldTrails相关扩展调用3.payload_...

2019-10-25 16:23:41 526 3

原创 WebRTC学习DAY10(ULPFEC)

分析WebRTC中Fec的利用1.在call\call.cc中CreateVideoSendstream中选择所使用的FecController,如果FecControllerDefault被重写,即自己定义则使用重写的FecController,否则默认使用FecControllerDefault,其利用传入参数clock_进行初始化,2.随后new一个VideoSendStrea...

2019-10-18 16:10:36 447

原创 C++复习重温的收获004

拷贝构造String(const String& str)拷贝复制String& operator=(const String& str)析构函数~String()String s1("hello")1.String的构造(构造函数)实际是利用指针传入new的char数组m_data,数组长度为原内容+1再将其拷贝到m_data中由于本...

2019-10-10 11:32:55 117

原创 WebRTC学习DAY09(ULPFEC)

UlpFec的解码过程分析在WebRTC中,Fec的传输是通过封装为Red包进行的,因此在接收的时候,是以Red包进行接收的。1.把接收到的Red包进行解包,转换为Rtp包或者Fec包处理此处调用ulpfec_receiver_impl中的AddReceivedRedPacket去掉Red头部获得Rtp/Fec包2.将Rtp/Fec存入对应的位置此处调用ulpfec_recei...

2019-09-29 16:09:53 581 1

原创 WebRTC学习DAY08(ULPFEC)

ULPFEC 编码学习总结在DAY05中分析了逻辑上FEC的构造https://blog.csdn.net/qq_32019929/article/details/101204082在DAY06中分析了WebRTC中FEC的使用流程和基本参数https://blog.csdn.net/qq_32019929/article/details/101287808在DAY07中简要分析了...

2019-09-27 18:21:44 485

原创 WebRTC学习DAY07(ULPFEC)

分析来说,在WebRTC中使用ULPFEC其实是动态的,媒体包来自于同一帧,并将其打成RTP包列表,冗余包的个数来自于FecProtectionParams函数中的fec_rate,即冗余度,这个是动态的假设媒体包为M个,冗余包为N个,采用某类掩码表(random或者bursty),那么ForwardErrorCorrection::GenerateFecPayload根据packet_m...

2019-09-25 15:52:57 404

原创 WebRTC学习DAY06(ULPFEC)

Ulpfec将一组M个报文进行异或,生成N(N就是FEC的冗余度)个FEC报文,打包出去。这组报文任意丢其中的N个,都可以通过这组(M-N)个报文+FEC冗余包恢复回来利用原理:XOR(异或算法)WebRTC里面默认使用Red+ulp的FEC构建流程SendVideoPacketAsRedMaybeWithUlpfec()函数完成下列四件事情1.把本rtp数据包【需要保...

2019-09-24 16:52:26 1320

原创 WebRTC学习DAY05(ULPFEC)

FEC:前向纠错WebRTC中常见两种:ULPFEC/FLEXFECULPFEC(非均等保护前向纠错)1.数据包包括:所保护的媒体数据,保护级别,对应保护级别的保护长度,偏移量掩码2.报文格式:[RTC Header只有在使用独立的数据流发送时才使用到]WebRTC采用封装在RED(冗余编码)报文中随源媒体数据一起发送,故不考虑RTPheader2.1 FEC Hea...

2019-09-23 18:47:00 902

原创 WebRTC学习DAY04

1.WebRTC中的媒体1.1 媒体轨道MediaStreamTrack WebRTC中的基本媒体单元,代表录制内容或设备(被称为源)或者源经过转换的可返回的单一类型的媒体。不同的MediaStreamTrack对象可以代表同一媒体源。两种方式用于暂停轨道媒体:静音和禁用。静音由用户和浏览器执行,应用程序其实是无法控制轨道静音的,但是可以检查轨道的muted(消音)属性...

2019-09-20 17:23:18 223

原创 随手一记自己学习的心得

这篇文章写给和我一样的初学者,或者方便自我未来进行回顾 接触JAVA框架也接近两周,从最初的什么是maven,什么是spring,什么是mybatis,什么是springboot都一无所知,到现在起码能上手随便写点基础程序了。个人觉得其实框架真的可以认为是顾名思义,搭好了框架,然后人为充填。其实从最初接触编程是源自于C语言,后来涉及到面向对象,选择了C++,当初只是单纯的不习...

2019-09-16 18:27:11 157

原创 C++复习重温的收获003

C++复习重温的收获0031.操作符重载所有成员函数都有一个隐藏参数this(谁调用,this就指向谁 )2.临时对象typename()3.c++不存在tostring类因此使用cout<<输出时,需要对<<进行重载4.设计class需要注意的事情:构造函数的初始化函数是否需要加const参数传递尽量使用引用传递,是否需要constreturn返回使...

2019-09-16 17:23:00 107

原创 WebRTC学习DAY03

WebRTC伪码实现此处非真正代码,但是以面向对象的方式思考,有助于之后对源代码的理解,主要了解整个实现过程由移动设备作为发起呼叫方,以PC端作为接收呼叫发移动设备:1.前提(建立信令通道,获取对等端身份)2.获取本地媒体PS:[navigator对象包含浏览器信息] function getMedia(){ //获取本地媒体 get local audio(mic...

2019-09-06 15:55:04 213

原创 C++复习重温的收获002

1.内联函数inline在class里面进行定义,或者在class外利用inline+函数名进行定义,内联函数类似于宏,如果是inline函数,处理起来很快。2.构造函数对类进行初始化,通过实参指定默认值,无返回值类型,也不是void类型当不允许被外界创建对象的时候,将构造函数放入private中【单例模式】3.重载常常发生在构造函数中。对函数重载的时候,只是名称相同,但是由于参数不...

2019-09-05 18:52:22 92

原创 WebRTC学习DAY02

基本WebRTC应用程序编程接口的工作方式建立会话1.获取本地媒体:WebRTC技术定义了一种最常见的方式:getUserMedia(),用于获取单个本地MediaStream,在获取一个或者多个媒体流后,使用MediaStreamAPI将它们组合到所需的流中。2.建立对等连接:RTCPeerConnection API是(WebRTC核心),即在两个对等段之间建立连接。RTCPeer...

2019-09-05 17:11:54 212

原创 WebRTC学习DAY01

WebRTC旨在将实时通信功能引入到所有浏览器中,并通过标准的[HTML5]标签和JavaScriptAPI使得这些功能可为Web开发者使用。 WebRTC系统所包含的典型元素集:Web服务器、运行于各种设备和操作系统之上的浏览器、其他互联网通信终端WebRTC的功能...

2019-09-04 17:58:39 171

原创 SIP协议学习DAY03

一个用户代理代表了一个终端系统:包含一个用户代理客户端(UAC)用来产生请求,一个用户代理服务端(UAS)用来响应请求合法SIP请求必须包含如下头域:(在DAY01中也有过介绍https://blog.csdn.net/qq_32019929/article/details/100164420)TO:第一个/最先指定请求的“逻辑”接收地,请求的用户或者资源的记录中的地址F...

2019-09-03 15:17:37 152

原创 C++复习重温的收获001

本身C++基础一般般把,从谭浩强老师的《C++面向对象程序设计》开始入门,毕竟是对大学的时候的入门书,可惜当时都没听C++的课,更别说好好学了,来工作之后要求选择面向对象的语言,只能重新拾起C++,匆匆又涉及到后来可能做后端开发,于是又去看JAVA了,匆匆忙忙的两个月过去了,又回来写C++了这次,书的话从C++ Primer Plus开始看,然后做点笔记吧,免得忘了,视频选择了侯捷的面向对象高...

2019-09-02 18:39:07 145

原创 SIP协议学习DAY02

SIP操作除了INVITE以外,还有1.登记服务(代理服务器获取用户当前地址的一个方法),可以在多台设备上登录,获取注册信息,这些信息在定位服务中进行保存,这样,代理服务器可以通过不同的手段查找到用户。2.检查SIP服务器负载3.使用客户端使用可选项4.用CANCEL取消一个未决的请求SIP是一个分层协议:(为了描述)最底层:语法和编码:扩展BNF范式传输层:客户端、服务器如何接受/...

2019-09-02 15:04:03 248

原创 SIP协议学习DAY01

SIP协议学习DAY01PS:默默吐槽一下,自己选的坑还是要填完,每天记录一下自己在学音视频过程中的点点滴滴,从0到0.5的过程吧,emmm,顺带给自己做个笔记SIP协议是应用层的控制协议,SIP 是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。...

2019-08-31 16:15:02 208

原创 利用ideal进行SpringMVC搭建

利用ideal进行SpringMVC搭建1.文件目录补全(在main/src下面建JAVA包【用作写代码】resouces包【作为源】)2.pom.xml依赖包注入(注意使用的spring版本,很多版本的某些包会无法使用)3.web.xml配置servlet【基本配置,可以后续补充servlet内容】4.springMVC.xml配置(写在resources包中)5.在JAVA目录下面建...

2019-08-30 18:54:04 374

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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