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

技术背景

没有多少开发者会相信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.rhkb.cn/news/435962.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习后门攻击分析与实现(二)

前言 在本系列的第一部分中,我们已经掌握了深度学习中的后门攻击的特点以及基础的攻击方式,现在我们在第二部分中首先来学习深度学习后门攻击在传统网络空间安全中的应用。然后再来分析与实现一些颇具特点的深度学习后门攻击方式。 深度学习与网络空间…

探索甘肃非遗:Spring Boot网站开发案例

1 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前&#…

SpringBoot框架下体育馆管理系统的构建

1引言 1.1课题背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其…

工具介绍---效率高+实用

Visual Studio Code (VS Code) 功能特点: 智能代码提示:内置的智能代码提示功能可以自动完成函数、变量等的输入,提高代码编写速度。插件丰富:支持成千上万的扩展插件,例如代码片段、主题、Linting等,能够…

通信工程学习:什么是CSMA/CD载波监听多路访问/冲突检测

CSMA/CD:载波监听多路访问/冲突检测 CSMA/CD(Carrier Sense Multiple Access/Collision Detect),即载波监听多路访问/冲突检测,是一种用于数据通信的介质访问控制协议,广泛应用于局域网(特别是以…

vue仿chatGpt的AI聊天功能--大模型通义千问(阿里云)

vue仿chatGpt的AI聊天功能–大模型通义千问(阿里云) 通义千问是由阿里云自主研发的大语言模型,用于理解和分析用户输入的自然语言。 1. 创建API-KEY并配置环境变量 打开通义千问网站进行登录,登陆之后创建api-key,右…

李宏毅机器学习2023-HW10-Adversarial Attack

文章目录 TaskBaselineFGSM (Fast Gradient Sign Method (FGSM)I-FGSM(Iterative Fast Gradient Sign Method)MI-FGSM(Momentum Iterative Fast Gradient Sign Method)M-DI2-FGSM(Diverse Input Momentum Iterative Fast Gradient Sign Method) Reportfgsm attackJepg Compress…

Iceberg 基本操作和快速入门

安装 Iceberg 是一种适用于大型分析表的高性能工具,通过spark启动并运行iceberg,文章是通过docker来进行安装并测试的 新建一个docker-compose.yml文件 文件内容 version: "3" services: spark-iceberg: image: tabulario/spark-iceberg co…

数据结构之链表(2),双向链表

目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…

微信小程序map组件自定义气泡真机不显示

最近遇到一个需求需要使用uniapp的map自定义气泡 ,做完之后发现在模拟器上好好的,ios真机不显示,安卓页数时好时不好的 一番查询发现是小程序的老问题了,网上的方法都试了也没能解决 后来看到有人说用nvue可以正常显示&#xff0c…

word2vector训练代码详解

目录 1.代码实现 2.知识点 1.代码实现 #导包 import math import torch from torch import nn import dltools #加载PTB数据集 ,需要把PTB数据集的文件夹放在代码上一级目录的data文件中,不用解压 #批次大小、窗口大小、噪声词大小 batch_size, ma…

《深度学习》卷积神经网络CNN 实现手写数字识别

目录 一、卷积神经网络CNN 1、什么是CNN 2、核心 3、构造 二、案例实现 1、下载训练集、测试集 代码实现如下: 2、展示部分图片 运行结果: 3、图片打包 运行结果: 4、判断当前使用的CPU还是GPU 5、定义卷积神经网络 运行结果&a…

后端-对表格数据进行添加、删除和修改

一、添加 要求: 按下添加按钮出现一个板块输入添加的数据信息,点击板块的添加按钮,添加;点击取消,板块消失。 实现: 1.首先,设计页面输入框格式,表格首行 2.从数据库里调数据 3.添加…

LPDDR4芯片学习(二)——Functional Description

一、LPDDR4寻址表 以每个die容量为4GB为例: Memory density(per channel) 2Gb:每个通道大小为2Gb,一个die有两个通道Configuration 16Mb 16DQ 8 banks 2 channels :16Mb的寻址空间16位每个channels8个bank*每个die两channels。1…

Java基础(Arrays工具类)(asList()方法)(详细)

目录 一、Arrays工具类 (1)引言 (2)基本介绍 (3)主要功能(提供的方法) (I)排序(Arrays.sort()) (II)搜索(查找…

ECCV 2024 现场:参会者付高价、跨万里,却无法入场?

ECCV(European Conference on Computer Vision,欧洲计算机视觉国际会议)是计算机视觉领域的重要国际会议之一,与CVPR和ICCV并称为计算机视觉的三大顶级会议。 ECCV2024是该系列会议的第18届会议,2024年9月29日至10月4…

第3篇:常见的Webshell查杀工具----应急响应篇

当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞。 本文推荐了10款Webshll检测工具,用于网站入侵排查。当然,目前市场上的很多主机安全产品也都提供这种…

引入Scrum激发研发体系活力

引言 在当今快速变化的技术环境中,IT企业面临着持续的市场压力和竞争,传统的瀑布式开发模式已经难以满足现代企业的需要。瀑布模型过于僵化,缺乏灵活性,导致项目经常延期,成本增加,最终可能无法达到预期效果…

这款工具在手,前端开发轻松搞定!

这款工具在手,前端开发轻松搞定! 引言 在之前的一篇文章中,已经给大家分享了一款AI助手。尽管该助手能够生成前端代码,但遗憾的是缺少了实时预览的功能。而现在,这一缺憾已经被弥补——你只需要描述你的设计想法&…

递归算法介绍和【题解】——数楼梯

递归算法介绍和【题解】——数楼梯 1.递推算法介绍2.数楼梯题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 1.思路解析2.AC代码 1.递推算法介绍 有些目标是宏大的,比如如果你想找到一个好工作,需要先把面试通过。要把面试通过,就需…