码流控制

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 (动态码流)相关推荐

  1. 实现对rtp H264码流的组帧

    rtp打包h264,包含了三种类型的包: 一个rtp包携带了一帧数据(single) 多个rtp包携带了一帧数据(FU-A) 一个rtp包携带了多帧数据(STAP-A) 在实际应用中绝大部分采用的是前 ...

  2. HLS + ffmpeg 实现动态码流视频服务

    一.简介 如下图,包含三部分,右边一列为边缘节点:中间一列代表数据中心:左边一列是项目为客户提供的一系列web管理工具: 具体来说在我们项目中有一堆边缘节点,每个节点上部署一台强大的GPU服务器及N个 ...

  3. (转载)H.264码流的RTP封包说明

    H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...

  4. RTP协议全解(H264码流和PS流)

    1 视频编码的原理 1.1 一个图像或者一个视频序列进行压缩,产生码流. 对图像的处理即是:帧内预测编码 其预测值P,是由已编码的图像做参考,经运动补偿得到的.预测图像P和当前帧Fn相减,得到两图像的 ...

  5. 将H264码流打包成RTP包

    分类: 流媒体(25) 版权声明:本文为博主原创文章,未经博主允许不得转载. H264码流打包成RTP包的代码如下: [cpp] view plaincopy #include <stdio.h ...

  6. H264码流打包成RTP包

    http://blog.csdn.net/tanningzhong/article/details/53281986 H264码流打包成RTP包的代码如下: [cpp] view plaincopy ...

  7. H264码流RTP封装方式详解

    H264码流RTP封装方式详解 文章目录 H264码流RTP封装方式详解 1 H264基本概念 2 NALU Header介绍 3 RTP封装H264码流 3.1 单一NALU模式 3.2 组合帧封装 ...

  8. RTP协议全解(H264码流和PS流)——看完这篇可以毕业

    http://blog.csdn.net/bytxl/article/details/50395427 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1 视频编码的原理 1. ...

  9. RTP协议全解析(H264码流和PS流)(转)

    源: RTP协议全解析(H264码流和PS流) 转载于:https://www.cnblogs.com/LittleTiger/p/10489247.html

最新文章

  1. php mpdf html 转pdf,使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片的时候,中文报错... ......
  2. java 方法大全_java中的方法大全
  3. php $_post 报错,关于php输入$_post[‘’]报错的原因
  4. 信息系统项目管理师之风险管理
  5. 模拟电梯1.0(类与对象实验)
  6. 第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
  7. 信息学奥赛一本通 1029:计算浮点数相除的余 | OpenJudge NOI 1.3 11
  8. 爬出数据标注陷阱,半监督学习模型暗藏多少玄机?
  9. 剑指offer第二版(150M超清分享PDF+源码)(转)
  10. mysql必知必会pdf脚本之家,sql必知必会pdf 下载
  11. 数字图像处理理论课件(清华大学计算机科学与技术)
  12. Python实现SIFT算法,附详细公式推导和代码
  13. 读书笔记《Redis入门指南》
  14. Adobe Photoshop 2020 无法创建新建文档的两种解决方法
  15. 手机4g接台式计算机,我用4G手机开热点连接电脑网速很慢怎么回事
  16. Anaconda Prompt 怎么切换工作路径
  17. Lie to Me: Bypassing Modern Web Application Firewalls
  18. weblogic启动慢原因
  19. 心灵奇旅最触动我的一段
  20. 【数藏之家】盘点周杰伦的NFT之路,NFT如何借明星之力形成“破圈效应”?

热门文章

  1. c语言循环嵌套寻找最大数,C语言的大海里:嵌套的循环语句的重要程序竟然是这几个?...
  2. OpenShift简介(二)
  3. 阿里资深架构师推荐 -- 如果正确的开启领域驱动设计
  4. vue运行报错Extra space after key template
  5. 读书笔记之《一口气读完世界历史》
  6. SQL Server CONVERT() 函数
  7. 第三周作业3——Bug Report
  8. HTML模板生成word,pdf文档
  9. c语言替换avx指令集,普及一下,关于SB的AVX指令集
  10. mmc命令 uboot_uboot mmc命令详解Nand flash uboot 命令详解