OBS推rtmp流拥塞时丢帧策略_rtmp推流丢帧_帝都小鸟的博客-程序员资料

技术标签: rtmp  obs  c++  

obs推rtmp流卡顿丢帧策略

1.检测队列buffer的长度,p帧超过900ms,b帧超过700毫秒开始丢帧。
2.丢帧策略新建一个circlebuf,音频不丢,视频按照优先级丢弃(i帧优先级为3,p帧优先级为2,b帧优先级为1),b帧超过700毫秒全部求其,p帧超过900毫秒全部丢弃。
3.触发丢帧后新来的帧,必须大于最小优先级。(解释:由于参考关系,比如p帧依赖i帧,所以p帧丢了后,要将后面p帧全部丢除,直到下一个I帧;而B帧也类似要直到下一个p帧);

buffer阀值的设置

obs_data_set_default_int(defaults, OPT_DROP_THRESHOLD, 700);
obs_data_set_default_int(defaults, OPT_PFRAME_DROP_THRESHOLD, 900);

拥塞率congestion的计算

超过buffer设置的阀值,为100%,否则为buffer缓存时长和缓存阀值的百分比

static float rtmp_stream_congestion(void <
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tanlovezhao/article/details/115583115

智能推荐

三种键盘布局qwerty、dvorak、colemak_weixin_34417814的博客-程序员资料

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

Android 平台代号、版本、API 级别和 NDK 版本对照表_卜大爷的博客-程序员资料

在Android开发过程中,很多时候,我们都需要查询Android版本代号、版本号及API级别之间的对应关系。本文对目前市场上所有Android版本做了一个对照汇总。

关于C语言的指针数组与指针数组的个人理解_weixin_33712881的博客-程序员资料

一、指针数组与指针数组  1,指针数组  顾名思义,即一个元素全部是指针的数组,其形式与普通数组相似,形式如 *a[N]。在理解指针数组的使用方式前,我先来说下我个人对数组的理解。  比如一维整形数组(形如int a[3]),其实是一个具有3个整形元素的变量;二维整形数组(形如int a[4][3]),可将其视为有a[4]和int[3]两部分构成,将a[4]视为一个一维数组,其中包...

代码重构的方法和意义_gorpeln-chen的博客-程序员资料

摘要:很多人认为重构浪费时间,影响项目进度,其实重构不仅可以让我们的代码更加强壮而且还可以加快我们的项目进度。就和我们盖一个高楼大厦一样,我们的架构和地基越好,我们的楼房会越坚固和牢靠。一、什么是重构          重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提高软件的扩展性和维护性。 二、为什么要

navicat 导出的sql文件,再导入,运行SQL文件成功,数据库中却没有表_为什么sql文件运行成功但是没有新文件_微风--轻许--的博客-程序员资料

问题描述:本来在数据库上右键 ,运行SQL文件 ,就可以导入 sql ,建表成功,并且数据也该的。但是我运行后却依旧没有表,多次刷新也是无表无数据。直到我把 sql 单独拿到 mysql 中运行才发现 SQL有问题。在自动 导出的SQL文件中给表名和字段都加上了双引号,要去掉这些引号才能正常运行。所有 sql 语句都是。再运行就可以了。...

数据库系统——数据库完整性_蓝谷芮济的博客-程序员资料

数据库完整性广义完整性:语义完整性、并发控制、安全控制、DB故障恢复等狭义完整性:语义完整性完整性涉及到实体完整性:主键参照完整性:候选键用户自定义完整性:语义完整性,就是用户自己定义的比如 sname char(8),学生的姓名就需要在8个字符之内SQL语言支持的约束静态约束integrity Constraint::=(O,P,A,R)O:列或者表P:需要定义A:更新时...

随便推点

深入了解OWIN Katana_寒冰屋的博客-程序员资料

目录介绍第1部分——什么是OWIN第2部分——什么是Katana第3部分——使用OWIN Katana进行应用程序开发3.1. 创建侦听器或服务器3.2. 配置中间件管道3.3. 创建中间件3.3.1. 创建中间件委托,由委托注册3.3.2. 创建一个中间件类,按类类型注册3.3.3. 创建中间件类,并通过类实例进行注册3.4. IIS集成管道第4部分——托管OWIN Katana应用程序4.1. 自托管为控制台应用程序4.2. 自托管为WinForm

联通托管服务器为什么打不开网页,为什么有些网页联通宽带打不开,移动4G能打开?..._BOBO爱吃菠萝的博客-程序员资料

首先我们看看为啥会有网站打不开的情况呢,一般的家庭上网或许宽带上网,假如浏览器有提示,那么网页打不开的原因很明显。但是没有任何提示网页就打不开一般有如下几个问题:首先,有可能是DNS有问题我们现在拜访网页都是通过www这种URL来拜访,我们的PC机或许手机终端是不知道URL如何拜访的,它们必须要知道这个URL对应的IP地址才能拜访网页。DNS就是查询这个URL的IP地址的过程,PC机或许手机向DN...

Mediator(中介者)模式_Findway_的博客-程序员资料

Mediator(中介者)模式问题 在面向对象系统的设计和开发过程中, 对象之间的交互和通信是最为常见的情况, 因为对象间的交互本身就是一种通信。 在系统比较小的时候, 可能对象间的通信不是很多、 对象也比较少, 我们可以直接硬编码到各个对象的方法中。 但是当系统规模变大, 对象的量变引起系统复杂度的急剧增加, 对象间的通信也变得越来越复杂, 这时候我们就要提供一个专门处理对象间交互和通信的类,

从零开始学微信小程序开发_学习小程序怎么学_黄慢慢manman的博客-程序员资料

从零开始学微信小程序开发–记录​ 疫情严重,被困在家,利用时间学习微信小程序的开发。经过查看各个demo例子选择了个税计数器这个比较简单的业务来开发实践。学习步骤一、准备工作:下载微信开发者工具。使用测试号创建一个项目。下载colorUI格式库开发,下载weiUI,github地址:https://github.com/weilanwl/ColorUI/ github地址:https...

FPGA练习:与门电路的实现_fpga与门代码_许野平的博客-程序员资料

1. 与门的 verilog 实现代码设计一个与门电路,实现 y = a &amp; b。verilog 代码如下:module addgate(a, b, y); input a; input b; output y; wire a; wire b; wire y; assign y = a &amp; b;endmodule 其中,wire 代表连线。也就是说,a、b、y 都是连线,assign 赋值的意思,就是说 = 号两边直接用线连起来。2. 测试代码测试代码如下:

SQLite3性能优化_pragma cache_size_tietao的博客-程序员资料

SQLite3性能调整主要通过pragma指令来实现。比如调整:空间释放、磁盘同步、Cache大小等。一.空间释放1.如何查询:PRAGMA auto_vacuum;含义:查询数据库的auto-vacuum标记。2.标记含义:auto-vacuum标记的含义:正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以后的添加操

推荐文章

热门文章

相关标签