RTMP播放器延迟最低可以做到多少?

news2024/9/21 2:30:34

技术背景

RTMP播放器的延迟可以受到多种因素的影响,包括网络状况、推流设置、播放器配置以及CDN分发等。因此,RTMP播放器的延迟并不是一个固定的数值,而是可以在一定范围内变化的。

正常情况下,网上大多看到的,针对RTMP播放器的延迟在2秒到3秒左右。这是基于RTMP协议本身的特性和一般的推流、播放设置所得出的结论。然而,当网络状况不佳、推流设置不当或播放器配置不合理时,延迟可能会增加。

具体来说,RTMP播放器的延迟可能受到以下因素的影响:

  1. 网络状况:网络延迟和丢包是影响RTMP播放器延迟的重要因素。当网络状况不佳时,数据包传输的延迟会增加,从而导致播放延迟增大。
  2. 推流设置:推流端的设置,如编码器的配置、关键帧间隔(GOP)的设置等,都会影响推流的实时性和延迟。例如,降低GOP的值可以减少延迟,但可能会增加编码器的负担和压缩率。
  3. 播放器配置:播放器端的设置,如缓冲区的大小、播放模式的选择等,也会影响播放的延迟。例如,设置较小的缓冲区可以减少延迟,但可能会增加播放过程中的卡顿现象。
  4. CDN分发:CDN(内容分发网络)的引入可以加速内容的传输和分发,但CDN节点的选择和配置也会影响播放的延迟。

为了降低RTMP播放器的延迟,可以采取以下措施:

  • 优化网络状况,确保网络连接的稳定性和带宽的充足性。
  • 调整推流设置,如使用更高效的编码器、降低GOP的值等。
  • 配置播放器以使用较小的缓冲区或选择适合低延迟的播放模式。
  • 合理配置CDN节点,确保内容能够快速、稳定地传输到用户端。

需要注意的是,虽然可以通过上述措施来降低RTMP播放器的延迟,但完全消除延迟是不可能的。因为RTMP协议本身是基于TCP的,而TCP协议具有重传机制,当网络出现丢包时会自动重传丢失的数据包,这会增加一定的延迟。此外,由于视频数据的处理和传输需要一定的时间,因此即使在最理想的情况下,RTMP播放器的延迟也会存在一定的最小值。

综上所述,RTMP播放器的延迟可以控制在一定范围内,但具体数值会受到多种因素的影响。在实际应用中,需要根据具体情况进行配置和优化以达到最佳的播放效果。

RTSP延迟没法再低了?

实际上,2015年,我们开始做RTMP的推拉流技术方案的时候,我们也遇到了同样的问题,我们先是发布了RTMP推送模块,发现市面上的开源的能找到的RTMP播放器,延迟都满足不了我们期望的毫秒级水准,无法实现移动单兵或其他操控类的使用场景。

为此,我们着手开始了全自研框架的RTMP播放器模块,2015年底,我们发布的延迟,让行业内大跌眼镜,左侧是我们的Windows平台RTMP推送模块,采集毫秒计时器窗口,然后,推送到nginx rtmp服务器,然后,右侧是我们的播放器拉取rtmp流的整体时延,整体毫秒级。

经过持续迭代后的SmartPlayer,早已脱胎换骨,Windows、Linux(含x86_64|aarch64)、Android、iOS全平台支持。

  •  [多实例播放]支持多实例播放;
  •  [事件回调]支持网络状态、buffer状态等回调;
  •  [视频格式]支持RTMP扩展H.265和Enhanced RTMP H.265,H.264;
  •  [音频格式]支持AAC/PCMA/PCMU/Speex;
  •  [H.264/H.265软解码]支持H.264/H.265软解;
  •  [H.264硬解码]Windows/Android/iOS支持特定机型H.264硬解;
  •  [H.265硬解]Windows/Android/iOS支持特定机型H.265硬解;
  •  [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
  •  [缓冲时间设置]支持buffer time设置;
  •  [首屏秒开]支持首屏秒开模式;
  •  [低延迟模式]支持低延迟模式设置(公网200~400ms);
  •  [复杂网络处理]支持断网重连等各种网络环境自动适配;
  •  [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
  •  [音视频多种render机制]Android平台,视频:SurfaceView/GLSurfaceView,音频:AudioTrack/OpenSL ES;
  •  [实时静音]支持播放过程中,实时静音/取消静音;
  •  [实时音量调节]支持播放过程中实时调节音量;
  •  [实时快照]支持播放过程中截取当前播放画面;
  •  [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
  •  [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
  •  [渲染镜像]支持水平反转、垂直反转模式设置;
  •  [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
  •  [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
  •  [ARGB叠加]Windows平台支持ARGB图像叠加到显示视频(参看C++的DEMO);
  •  [解码前视频数据回调]支持H.264/H.265数据回调;
  •  [解码后视频数据回调]支持解码后YUV/RGB数据回调;
  •  [解码后视频数据缩放回调]Windows平台支持指定回调图像大小的接口(可以对原视图像缩放后再回调到上层);
  •  [解码前音频数据回调]支持AAC/PCMA/PCMU/SPEEX数据回调;
  •  [音视频自适应]支持播放过程中,音视频信息改变后自适应;
  •  [扩展录像功能]完美支持和录像SDK组合使用。

所以,我们可以有底气的说,在没测试过大牛直播SDK的SmartPlayer RTMP播放器之前,你甚至不相信行业内,RTMP播放器延迟可以稳定的做到毫秒级。全自研内核加持、功能齐全、高稳定、超低延迟、超低资源占用,得到了业内的一致认可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GIS系列】通过Java代码高效实现ArcGIS SDE数据库的数据叠加分析

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 本文涉及GDAL及GeoTools代码实践&#xff…

计算机毕业设计选题推荐-宠物店管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

机器学习(9.2-9.8)pytorch学习(二)

文章目录 摘要Abstract 1 torch 和 torchvision1.1 查看CIFAR10数据集内容1.2 Dataloader的使用 2 神经网络的构建2.1 神经网络的基本骨架2.2 卷积层原理2.2.1 卷积基本原理2.2.2 padding 2.3 构建一个卷积神经网络2.4 池化层2.5 非线性激活2.5.1 RELU的使用2.5.2 Sigmoid的使用…

【开源免费】基于SpringBoot+Vue.J大学生租房平台(JAVA毕业设计)

本文项目编号 T 019 ,文末自助获取源码 \color{red}{T019,文末自助获取源码} T019,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

java基础概念21-权限修饰符、代码块

一、权限修饰符 1-1、作用 权限修饰符,是用来控制一个成员能够被访问的范围的。 可以修饰:成员变量,方法,构造方法,内部类。 1-2、权限修饰符的分类 二、代码块 局部代码块构造代码块静态代码块 2-1、局部代码块 …

【C++ Primer Plus习题】12.5

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <cstdlib> #in…

Linux-【组管理、权限管理、定时任务调度】

目录 前言 Linux组基本介绍 文件/目录 所有者 查看文件 所有者 修改文件所有者 文件/目录 所在组 修改文件/目录 所在组 其它组 改变用户所在组 权限的基本介绍 rwx权限 rwx作用到文件 rwx作用到目录 修改权限 第一种方式&#xff1a;、-、变更权限 第二种方式…

Java进阶13讲__第11讲

配置文件 日志 1. Properties属性文件 1.1 特点、作用 都只能是键值对键不能重复文件后缀一般是.properties结尾的 1.2 读取 package cn.hdc.oop10.properties;import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Properties; import j…

「iOS」折叠cell

iOS学习 前言简单的折叠cell效果原理 稍作修改总结 前言 在暑期仿写中&#xff0c;3G share项目里我们简单的使用了折叠cell。现在写一篇博客来总结该方法。 简单的折叠cell 效果 先看效果&#xff1a; 原理 将cell的高度设置为一个单元格的高度。创建一个按钮&#xff0…

【C++】作用域指针、智能指针、共享指针、弱指针

十、智能指针、共享指针 从上篇文章 【C】如何用C创建对象&#xff0c;理解作用域、堆栈、内存分配-CSDN博客 中我们知道&#xff0c;你的对象是创建在栈上还是在堆上&#xff0c;最大的区别就是对象的作用域不一样。所以在C中&#xff0c;一旦程序进入另外一个作用域&#xf…

【xinference】(19):在L40设备上通过Xinference框架,快速部署CogVideoX-5b模型,可以生成6秒视频,速度比409D快一点

1&#xff0c;关于Xinference Xorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 Xinference&#xff0c;您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理&#xff0c;并创建强大的 AI 应用。 htt…

鸿蒙开发笔记_电商严选01_登录页面(静态页面)

由于上班较忙,抽空闲暇时间,快速更新中。。。 效果图 登录页面(静态页面) import CommonConstants from ./CommonConstants;/*** 登录页面*/ // 输入文本框,的自定义样式扩展 // @Extend装饰器表示继承、扩展的意思。这里代表:自定义样式扩展 @Extend(TextInput) functio…

Qt使用小技巧之按钮动态变化

前言 最近写小demo中无意发现的&#xff0c;是想实现当鼠标悬停到按钮上面的时候&#xff0c;按钮实现动态变化&#xff0c;让人知道鼠标经过了按钮&#xff0c;效果如下 hoverDynamicPushButton 正文 首先是将按钮的边框给去掉&#xff0c;然后设置下它的悬停伪状态就行了 格…

linux日常使用命令总结

一、文件复制 在 Linux 中&#xff0c;复制文件是一个常见的操作&#xff0c;通常使用 cp 命令来完成。cp 命令提供了丰富的选项来满足不同的需求。下面是使用 cp 命令复制文件的一些基本用法和示例。 基本用法 cp 命令的基本语法如下&#xff1a; cp [选项] 源文件 目标文…

京东获得JD商品详情 API 返回值说明||京东商品详情数据采集API接口详解

item_get-获得JD商品详情 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheStri…

了解分布式事务与本地事物基本概念

一、本地事物 1、事物的基本性质 数据库事物的几个特性&#xff1a;原子性、一致性、隔离性、持久性&#xff0c;简称ACID&#xff1b; 原子性&#xff1a;一系列的操作整体不可拆分&#xff0c;要么全成功&#xff0c;要么同时失败。 一致性&#xff1a;数据在事物的前后&am…

SpringMVC上

SpringMVC介绍 MVC模型 MVC全称Model View Controller&#xff0c;是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分&#xff1a; Model&#xff08;模型&#xff09;&#xff1a;指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用…

Typora教程

1 TyporaChina https://typorachina.com/guide/

【C语言必学知识点七】坚决不允许你还不知道C/C++程序如何对内存进行分区!!!

动态内存管理——详细解读C/C程序中的内存分区 导读一、C/C程序中的内存分区二、常见的动态内存的错误2.1 内存开辟失败后对空指针进行解引用2.2 对已开辟好的空间进行越界访问2.3 free不是有动态函数开辟的空间2.4 free动态内存开辟空间的一部分2.4.1 free函数的底层逻辑 2.5 …

【HarmonyOS】- 内存优化

文章目录 知识回顾前言源码分析1. onMemoryLevel2. 使用LRUCache优化ArkTS内存原理介绍3. 使用生命周期管理优化ArkTS内存4. 使用purgeable优化C++内存拓展知识1. Purgeable Memory总结知识回顾 前言 当应用程序占用过多内存时,系统可能会频繁进行内存回收和重新分配,导致应…