RTMP、RTSP直播播放器的低延迟设计探讨

news2024/9/29 5:59:49

技术背景

没有多少开发者会相信RTMP或RTSP播放器,延迟会做到150-300ms内,除非测试过大牛直播SDK的,以Android平台启动轻量级RTSP服务和推送RTMP,然后Windows分别播放RTSP和RTMP为例,整体延迟如下:

大牛直播 SDK在保证超低延迟方面采取了多项技术措施。首先,其自有框架易于扩展,采用自适应算法,使得延迟更低、解码绘制效率更高。以 Windows 平台为例,海康摄像头 2560*1440 分辨率、8M 码率的 RTSP 流,SmartPlayer 延迟 200 毫秒左右,可满足平衡操控等低延迟场景。低延迟模式下,硬件性能无瓶颈的前提下,延迟可稳定在 150-300ms。

此外,大牛直播 SDK 的 RTSP 播放器支持 TCP 和 UDP 模式的自动切换,提高了播放的兼容性和灵活性,能够更好地适应不同的网络环境,减少延迟。同时,支持设置缓冲时间,以应对网络抖动等不稳定情况,确保播放的流畅性,在保证流畅性的同时也有助于控制延迟。

在技术实现上,底层原生模块把 RTSP|RTMP 流拉过来,做解析解码回调 YUV 或 RGB 数据到上层,在每个环节都做到极致,总体延迟可以达到 200 - 400ms。并且支持多实例播放,适用于需要同时监控多个视频源的场景,满足不同用户需求的同时也保证了低延迟性能。

如何设计低延迟的直播播放器

大牛直播 SDK 通过自有框架、自适应算法、协议自动切换、缓冲时间设置以及优化的技术实现等多方面措施,保证了超低延迟的播放效果。

自有框架如何降低延迟

大牛直播SDK的自有框架在降低延迟方面表现出色。它易于扩展,能够根据不同的应用场景进行灵活调整。这种自有框架在设计之初就以降低延迟为重要目标,通过优化各个模块之间的协作,提高数据处理效率。例如,在 RTMP 或 RTSP 直播播放器的设计中,从数据解析、解码、音视频数据同步到绘制等环节,自有框架能够确保数据传输的高效性,减少不必要的等待时间。同时,自有框架还能自适应不同的网络环境和硬件条件,自动调整参数以达到最佳的延迟效果。比如在网络状况不佳时,能够自动降低码率以保证流畅播放,同时尽量减少延迟的增加。此外,自有框架还通过优化内部算法,提高数据处理速度,进一步降低延迟。例如在解码过程中,采用高效的解码算法,充分利用硬件加速功能,如 GPU 加速,以快速处理大量的音视频数据。

自适应算法如何实现

大牛直播SDK的自适应算法是实现超低延迟的关键之一。该算法能够根据网络状况动态调整码率,确保直播服务的流畅性。例如,当网络带宽充足时,自适应算法会提高码率,以提供更高质量的视频画面;而当网络带宽受限或出现波动时,算法会自动降低码率,以减少数据传输量,保证视频的流畅播放,同时降低延迟。此外,自适应算法还能根据不同的硬件性能进行调整。如果硬件性能强大,算法会充分利用硬件资源,提高数据处理速度,进一步降低延迟;如果硬件性能有限,算法会自动优化参数,以确保在不影响播放质量的前提下,尽量降低延迟。在实际应用中,自适应算法会不断监测网络状况和硬件性能,并实时调整参数,以实现最佳的延迟效果。

RTSP播放器协议自动切换作用

大牛直播SDK的RTSP播放器支持 TCP 和 UDP 模式的自动切换,这在控制延迟方面起到了重要作用。不同的服务器可能支持不同的传输协议,自动切换功能可以提高播放的兼容性和灵活性。例如,在某些网络环境下,UDP 协议可能具有更低的延迟,但稳定性相对较差;而 TCP 协议则更加稳定,但延迟可能会稍高一些。通过自动切换功能,播放器可以根据实际情况选择最合适的传输协议,以达到平衡延迟和稳定性的目的。当网络状况良好时,播放器可以自动切换到 UDP 模式,以降低延迟;当网络出现抖动或不稳定时,播放器会自动切换到 TCP 模式,以保证播放的稳定性。这种自动切换功能使得播放器能够在不同的网络环境下都能保持较好的性能,为用户提供低延迟的播放体验。

缓冲时间设置如何控制延迟

大牛直播SDK支持设置缓冲时间,这是控制延迟的一个重要手段。缓冲时间的设置可以应对网络抖动等不稳定情况,确保播放的流畅性。如果缓冲时间设置得过长,虽然可以更好地应对网络波动,但会增加延迟;如果设置得过短,可能会导致播放卡顿。因此,合理设置缓冲时间是关键。例如,在网络状况较为稳定的情况下,可以适当缩短缓冲时间,以降低延迟;而在网络状况较差或不稳定时,可以适当增加缓冲时间,以保证播放的流畅性。同时,大牛直播 sdk 还会根据网络状况自动调整缓冲时间,以实现最佳的延迟和流畅性平衡。例如,当网络出现抖动时,自动增加缓冲时间,以避免播放卡顿;当网络恢复稳定时,逐渐减少缓冲时间,以降低延迟。

底层原生模块如何优化延迟

底层原生模块在优化延迟方面发挥了重要作用。以 Android 平台为例,原生模块拿到 RTSP 或 RTSP 流后,解码获取到原始的 YUV 或 RGB 数据,然后投递给上层应用。在这个过程中,为了降低延迟,原生模块会尽可能高效率地进行数据交互,减少数据的投递和拷贝。例如,采用优化的数据传输算法,确保数据能够快速、准确地传递到上层应用。同时,底层原生模块还会与上层应用进行紧密配合,根据不同的应用场景和需求进行优化。例如,在 VR 头显播放场景下,为了实现毫秒级延迟的播放,底层原生模块会与 Unity 进行高效的数据交互,确保数据能够快速绘制,减少延迟。此外,底层原生模块还会不断进行优化和改进,以适应不断变化的硬件和网络环境,为用户提供更低延迟的播放体验。

总结

做RTMP、RTSP播放器容易,做个好的播放器,真的要投入几十倍的精力,大牛直播SDK始于2015年,通过自有框架、自适应算法、RTSP 播放器协议自动切换、缓冲时间设置以及底层原生模块等多方面的优化,共同保证了超低延迟的播放体验。在实际应用中,这些技术手段相互配合,根据不同的网络环境和硬件条件进行自动调整,为用户提供了高质量、低延迟的直播服务。

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

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

相关文章

FastAPI 第六课 -- 请求和响应

目录 一. 前言 二. 请求数据 2.1. 查询参数 2.2. 路径参数 2.3. 请求体 三. 响应数据 3.1. 返回 JSON 数据 3.2. 返回 Pydantic 模型 3.3. 请求头和 Cookie 四. 重定向和状态码 五. 自定义响应头 一. 前言 在 FastAPI 中,请求(Request&#…

【web安全】——信息收集

一、收集域名信息 1.1域名注册信息 工具:站长之家 whois查询 SEO综合查询 1.2子域名收集 原理:字典爆破,通过字典中的各种字符串与主域名拼接,尝试访问。 站长之家 直接查询子域名 ip138.com https://phpinfo.me/domain/ …

【源码+文档+调试讲解】美食推荐系统Python

摘 要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,豆果美食推荐系统展现了其蓬勃生命力和广阔的前景。与此同时&#xff0c…

第十四届蓝桥杯真题Python c组F.棋盘(持续更新)

博客主页:音符犹如代码系列专栏:蓝桥杯关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 【问题描述】 小蓝拥有 n n 大小的棋盘,一开始棋盘上全都…

【韩顺平Java笔记】第2章:Java概述

按视频的标号来对应小标题,自用学习笔记 文章目录 5. 内容梳理6. 程序举例6.1 什么是程序 7. Java故事7.1 Java诞生小故事7.2 Java技术体系平台 8. Java特性8.1 Java重要特点 9. sublime10. jdk介绍10.1 Java运行机制及运行过程10.1.1 Java虚拟机(JVM&a…

基于ASRPRO的语音应答

做这个的起因是为了送女朋友,而且这东西本身很简单,所以在闲暇之余尝试了一下。 这个工程很简单,只通过对ASRPRO进行编程即可。 先看效果。(没有展示所有效果,后续会列出来所有对话触发) 语音助手示例1 语音…

AI驱动TDSQL-C Serverless 数据库技术实战营-与AI的碰撞

目录 一、简介 二、实验介绍 三、结果展示 四、实操指导 4.1 系统设计 4.2 环境搭建(手把手教程) 4.3 应用构建 4.4 效果展示 4.5 踩坑避雷总结 五、清理资源 5.1 删除TDSQL-C Serverless 5.2 删除 HAI 算力 六、实验总结归纳 一、简介 本…

Netty系列-5 Netty启动流程

背景 Netty程序有固定的模板格式,以ServerBootstrap为例: public class NettyServer {public void start(int port) {ServerBootstrap serverBootstrap new ServerBootstrap();EventLoopGroup boosGroup new NioEventLoopGroup(1);EventLoopGroup workGroup ne…

番外篇 | 应对遮挡挑战,北航提出新型模型YOLOv5-FFM表现优异

前言:Hello大家好,我是小哥谈。在本文中,作者提出了一种改进的轻量级YOLOv5-FFM模型来解决行人检测遮挡问题。为了实现目标,作者在YOLOv5模型框架基础上进行了改进,并引入了Ghost模块和SE模块。此外,作者还设计了一个局部特征融合模块(FFM)来处理行人检测中的遮挡问题。…

【题解】2022ICPC杭州-K

翻译 原题链接   简述一下就是每次询问重新定义一个字母排序表&#xff0c;问在这个顺序下n个字符串的序列的逆序数是多少。 字典树计算逆序数 先考虑初始状况下&#xff0c;即 a < b < . . . < z a<b<...<z a<b<...<z的情况下&#xff0c;逆序…

基于PI控制器的车辆行驶控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 步骤一: 确定目标与测量 4.2 步骤二: 计算误差 4.3 步骤三: 设计PI控制器 4.4 步骤四: 应用控制信号 4.5 步骤五: 反馈循环 5.完整工程文件 1.课题概述 基于PI控制器的车辆行驶控制系统是一种常…

Hive数仓操作(一)

Hive 介绍 Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;旨在简化大规模数据集的管理和分析。它将结构化数据文件映射为表&#xff0c;并提供类似 SQL 的查询功能。Hive 的数据存储在 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;中&#xff0c;使用 Hive 查询语…

使用MessagePipe实现进程间通信

1、MessagePipe介绍 可以用于.NET和Unity上面的高性能的内存/分布式消息传递管道。适用于发布/订阅模式、CQRS的中介模式、Prism中的EventAggregator、IPC&#xff08;进程间通信&#xff09;-RPC等。 支持&#xff1a; 依赖注入过滤器管道更好的事件同步/异步带键值的/无键…

信息安全工程师(26)物理安全概念与要求

前言 物理安全是网络安全体系中的重要组成部分&#xff0c;它关注于保护物理环境、设备和资源免受未经授权的访问、破坏、损坏或盗窃。 一、物理安全概念 物理安全&#xff0c;也称为实体安全&#xff0c;是指通过采取各种物理措施来保护支持网络信息系统运行的硬件&#xff08…

【Qt】Qt中的窗口坐标 信号与槽

Qt中的窗口坐标 && 信号与槽 1. Qt中的窗口坐标2. 信号与槽的概述3. 信号和槽的使用3.1 connect函数的使用3.2 查看内置信号和槽3.2 connect的参数类型不匹配问题 4. 自定义信号 && 自定义槽4.1 自定义槽4.2 自定义信号 5. 带参数的信号和槽6. 信号与槽的关联方…

leetcode_55:跳跃游戏

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输…

C#由窗体原子表溢出造成的软件闪退的问题解决方法

报错信息 由于在MS.Win32.UnsafeNativeMethods.RegisterClassEx产生了报错信息&#xff0c;但是一直向外部抛出错误但始终没有被捕捉成功&#xff0c;直到报错被UI线程捕获&#xff0c;但是仍然没有进行处理&#xff0c;所有造成WPF的应用闪退。 解析报错信息 1.从异常初始位…

Camera Raw:打开图像

在图像工作流程中&#xff0c;无论是 Raw 格式图像文件还是 JPEG、TIFF 文件&#xff0c;都可以先使用 Camera Raw 打开并调整后&#xff0c;再进入其它 Adobe 软件如 Photoshop 中进行进一步的编辑和处理。 一、打开 Raw 格式图像 1、通过 Adobe Bridge 打开 在 Adobe Bridge …

Excel插件:dd统计与排名

Excel插件&#xff1a;dd统计与排名 使用教程 专门为学校成绩统计与排名设计的插件 一、安装后如图 二、 功能介绍&#xff1a; &#xff08;一&#xff09;单科统计与排名 1、 模板说明&#xff08;单科用&#xff09; 2、 单科三分四率统计 PS&#xff1a;可以设置界值&am…

哈希知识点总结:哈希、哈希表、位图、布隆过滤器

目录 哈希 哈希表 哈希常用方法 1、直接定址法 2、存留余数法 哈希冲突 哈希冲突的解决办法 1、闭散列&#xff1a;开放定址法 &#xff08;1&#xff09;线性探测法 &#xff08;2&#xff09;二次探测法 2、开散列 哈希桶 / 拉链法 哈希的运用 位图 set操作 …