RTCP/RTP (动态码流)
码流控制
1.Webrtc
本文档码流控制思路是借鉴了webrtc拥塞控制技术,先介绍一下它两种拥塞控制技术:
1、基于延迟(delay-based)的拥塞控制算法:算法由数据的接收方实现,接收方需要记录每个数据包到达的时间和大小,并计算每个数据分组之间(inter-group)的延迟的变化,由此判断当前网络的拥塞情况,并最终输出码率估计值由RTCP feedback(TMMBR或 REMB)反馈给发送方;
2、基于丢包(loss-based)的拥塞控制算法:算法则由数据的发送方来实现,发送方通过从接收方周期性发来的RTCP RR(Receiver Report)中获取丢包信息以及计算RTT,并结合TMMBR或REMB中携带的码率信息算得最终的码率值,然后由媒体引擎根据码率来配置编码器,从而实现码率的自适应调整。
综上简而言之webrtc拥塞技术的核心就是接收端基于RTP/RTCP协议通过上述算法计算出RTCP的feedback/RR即网络延迟和丢包,反馈给发送端。发送端根据自身阀值进行调节码流
2.我的方案
思路:发送端发送RTP数据,接收端拿RTP时间戳算延时、RTP序列号算丢包率。从而得到了网络延迟阻塞和丢包率情况,通过RTCP的feedback/RR反馈给发送端。发送端根据自身阀值进行调节码流
具体实现分解为四步: RTP/RTCP协议完善、码流控制算法的实现、设备端校验阀值的设定,通知设备端上层的联调。
2.1.1.协议完善
目前已经有RTP序列号,仍需要实现RTP时间戳,实现RTCP Report。
RTP 协议(Real TimeProtocol)提供具有实时特征的、端到端的数据传送服务,可用来传送声音和运动图像数据。在这项数据传送服务中包含了装载数据的标识符、序列计数、时戳和传送监视。RTCP 是 RTP 的控制协议, 基本功能是提供关于数据传输质量的反馈。
2.1.2.算法实现
这一块是需要重新设计。
a、延迟算法,基于RTP的时间戳:设相邻两个数据分组到达接收方的时间间隔为t(i) - t(i-1),而两者被发送的时间间隔则为T(i) - T(i-1),那么就有延迟变量D(i)=t(i)-t(i-1) - (T(i)-T(i-1))。如果D(i) > 0,就说明数据在网络传输时存在延迟的现象,且D(i)应该符合正态分布图,如下:
b、丢包算法,基于RTP的序列号:序列号不连续表示丢包,计算相对时间内的丢包率,V(i)= count/time。
time:RTCP的间隔时间,count为丢包数目。UDP存在丢包,即P2P通道需使用丢包率运算。
2.1.3.阀值设定
阀值由下图的两条生命线和丢包率综合得出,需要实际网络测试。
2.1.4.设备联调
目前使用detect_lost_packets(int code)回调告知设备端,此处需要设备端配合调试
RTCP/RTP (动态码流)相关推荐
- 实现对rtp H264码流的组帧
rtp打包h264,包含了三种类型的包: 一个rtp包携带了一帧数据(single) 多个rtp包携带了一帧数据(FU-A) 一个rtp包携带了多帧数据(STAP-A) 在实际应用中绝大部分采用的是前 ...
- HLS + ffmpeg 实现动态码流视频服务
一.简介 如下图,包含三部分,右边一列为边缘节点:中间一列代表数据中心:左边一列是项目为客户提供的一系列web管理工具: 具体来说在我们项目中有一堆边缘节点,每个节点上部署一台强大的GPU服务器及N个 ...
- (转载)H.264码流的RTP封包说明
H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...
- RTP协议全解(H264码流和PS流)
1 视频编码的原理 1.1 一个图像或者一个视频序列进行压缩,产生码流. 对图像的处理即是:帧内预测编码 其预测值P,是由已编码的图像做参考,经运动补偿得到的.预测图像P和当前帧Fn相减,得到两图像的 ...
- 将H264码流打包成RTP包
分类: 流媒体(25) 版权声明:本文为博主原创文章,未经博主允许不得转载. H264码流打包成RTP包的代码如下: [cpp] view plaincopy #include <stdio.h ...
- H264码流打包成RTP包
http://blog.csdn.net/tanningzhong/article/details/53281986 H264码流打包成RTP包的代码如下: [cpp] view plaincopy ...
- H264码流RTP封装方式详解
H264码流RTP封装方式详解 文章目录 H264码流RTP封装方式详解 1 H264基本概念 2 NALU Header介绍 3 RTP封装H264码流 3.1 单一NALU模式 3.2 组合帧封装 ...
- RTP协议全解(H264码流和PS流)——看完这篇可以毕业
http://blog.csdn.net/bytxl/article/details/50395427 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1 视频编码的原理 1. ...
- RTP协议全解析(H264码流和PS流)(转)
源: RTP协议全解析(H264码流和PS流) 转载于:https://www.cnblogs.com/LittleTiger/p/10489247.html
最新文章
- php mpdf html 转pdf,使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片的时候,中文报错... ......
- java 方法大全_java中的方法大全
- php $_post 报错,关于php输入$_post[‘’]报错的原因
- 信息系统项目管理师之风险管理
- 模拟电梯1.0(类与对象实验)
- 第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
- 信息学奥赛一本通 1029:计算浮点数相除的余 | OpenJudge NOI 1.3 11
- 爬出数据标注陷阱,半监督学习模型暗藏多少玄机?
- 剑指offer第二版(150M超清分享PDF+源码)(转)
- mysql必知必会pdf脚本之家,sql必知必会pdf 下载
- 数字图像处理理论课件(清华大学计算机科学与技术)
- Python实现SIFT算法,附详细公式推导和代码
- 读书笔记《Redis入门指南》
- Adobe Photoshop 2020 无法创建新建文档的两种解决方法
- 手机4g接台式计算机,我用4G手机开热点连接电脑网速很慢怎么回事
- Anaconda Prompt 怎么切换工作路径
- Lie to Me: Bypassing Modern Web Application Firewalls
- weblogic启动慢原因
- 心灵奇旅最触动我的一段
- 【数藏之家】盘点周杰伦的NFT之路,NFT如何借明星之力形成“破圈效应”?
热门文章
- c语言循环嵌套寻找最大数,C语言的大海里:嵌套的循环语句的重要程序竟然是这几个?...
- OpenShift简介(二)
- 阿里资深架构师推荐 -- 如果正确的开启领域驱动设计
- vue运行报错Extra space after key template
- 读书笔记之《一口气读完世界历史》
- SQL Server CONVERT() 函数
- 第三周作业3——Bug Report
- HTML模板生成word,pdf文档
- c语言替换avx指令集,普及一下,关于SB的AVX指令集
- mmc命令 uboot_uboot mmc命令详解Nand flash uboot 命令详解