VLC还是SmartPlayer?Windows平台RTSP播放器低延迟探讨

news2024/12/15 1:34:46

技术背景

好多开发者在用过大牛直播SDK的RTSP播放器后,都希望我们也分享下,如何在Windows平台实现低延迟的RTSP播放?低延迟的RTSP播放器,说起来容易做起来难,下面,我们从以下维度做个探讨:

播放器设置优化

  • 缓存设置调整:不管你是使用VLC还是大牛直播SDK的SmartPlayer播放器,找到设置缓存相关选项。通常,降低缓存时间可以减少延迟,当然,缓存值不宜过小,否则可能会导致播放卡顿。在网络状况较好的情况下,可以将缓存时间设置在100-200毫秒。不同的播放器设置方式可能不同,需要根据具体的播放器进行查找和调整。
  • 启用低延迟模式:SmartPlayer播放器有专门的低延迟模式选项,开启该选项可以降低播放延迟,这样保证过来数据就马上解码渲染。

网络优化

  • 选择合适的网络连接:使用高质量、稳定且带宽足够的网络连接,尽量减少网络波动和丢包现象。优先选择有线网络连接,如果必须使用无线网络,要确保信号强度和稳定性良好。
  • 设置网络优先级:在 Windows 的网络设置中,可以为 RTSP 播放器相关的应用程序或进程设置较高的网络优先级,确保视频流量能够优先传输。具体操作方法是在 “任务管理器” 中找到相关应用程序,右键选择 “设置优先级”,将其设置为 “高” 或 “实时”(但要注意不要过度影响其他关键系统进程的运行)。
  • 减少网络路径中的跳数和路由器数量:尽量减少网络传输过程中的中间节点,例如避免使用过多的路由器或网络交换机,因为每经过一个节点都可能会增加一定的延迟。

解码器和视频参数优化

  • 选择低延迟的解码器:有些播放器支持选择不同的解码器,优先选择专为低延迟优化的解码器,或者更新到最新版本的解码器,以获得更好的性能。
  • 调整视频参数:如果可以调整视频源的参数,尝试减少 I 帧和 P 帧之间的间隔,因为间隔越小,解码所需的时间就越短,从而降低延迟。但需要注意,减小间隔可能会增加视频的码率和带宽需求。

硬件加速利用

  • GPU 加速:如果计算机的显卡支持 GPU 加速,并且播放器也支持该功能,开启 GPU 加速可以大大提高视频解码和处理的速度,从而减少延迟。在播放器的设置中查找相关的 GPU 加速选项并启用它。
  • 使用性能更好的硬件:升级计算机的硬件,如处理器、内存等,可以提高系统的整体性能,减少视频处理和播放过程中的延迟。

代码层面优化

  • 优化数据接收和处理流程:在开发自己的 RTSP 播放器应用程序时,要优化代码中数据接收和处理的逻辑,减少不必要的操作和等待时间,提高数据处理的效率。
  • 设置合适的超时时间和自动切换协议:根据实际网络情况,设置合理的 RTSP 超时时间,并开启自动切换 TCP/UDP 等传输协议的功能,以便在网络状况变化时能够及时调整传输方式,减少延迟。

VLC还是SmartPlayer

VLC Media Player

先说VLC,VLC播放器是一款非常受欢迎的多媒体播放器:

功能强大且开源免费:VLC 是一款功能强大的多媒体播放器,支持多种音频和视频格式以及流媒体协议,对 RTSP 协议的支持良好。用户可以方便地播放来自网络摄像头、流媒体服务器等的 RTSP 视频流。并且其开源的特性使得开发者可以根据自己的需求对其进行修改和优化,也为软件的不断改进提供了可能。

跨平台性:可在 Windows、macOS、Linux 等多种操作系统上运行,这对于需要在不同平台上使用 RTSP 播放器的用户来说非常方便,能够满足不同用户在各种操作系统环境下的需求。

广泛的解码器支持:能播放大多数常见的视频和音频格式,对于不同编码格式的 RTSP 流都有较好的兼容性。无论是 H.264、H.265 等视频编码格式,还是 AAC、PCMA、PCMU 等音频编码格式的 RTSP 流,VLC 通常都能顺利播放。

操作相对简单:界面简洁,易于上手。用户只需简单地输入 RTSP 流的 URL 地址,即可快速播放视频。

支持多种功能和设置:除了基本的播放功能外,还支持一些高级功能,如播放控制(播放、暂停、快进、快退等)、音频和视频轨道的选择、字幕设置等。用户可以根据自己的需求进行相应的设置和调整。

VLC播放器也并非完美无缺,存在一些不足之处,可能存在一定的延迟,在播放 RTSP 流时,可能会出现一定程度的延迟。不过,这种延迟情况可以通过调整播放器的缓存设置等参数来进行优化,但如果网络环境较差,延迟可能仍然比较明显。性能消耗尽管已经做的很好,但是相对较大,对于一些配置较低的计算机,播放高清或高码率的 RTSP 流时,可能会占用较多的系统资源,导致计算机性能下降,出现播放卡顿等情况。总体来说,VLC 播放器是一款功能强大、实用性高的多媒体播放器,值得用户尝试和使用。特别是点播或本地文件播放,非常适用,对延迟要求的场景下,略显不足。

SmartPlayer

大牛直播SDK的SmartPlayer播放器,始于2015年,业内一致认可的跨平台RTSP直播播放器SDK,除了功能齐全、性能稳定,延迟非常低(100-300ms区间),以播放海康2560*1440分辨率,8M固定码率为例,SmartPlayer做到的延迟如下:

RTSP播放器,一般建议实现的功能如下(如不单独说明,系Windows、Linux、Android、iOS全平台支持),当然,如果您是用在特定场景,一般不需要实现的这么齐全。

  •  [支持播放协议]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK;
  •  [多实例播放]支持多实例播放;
  •  [事件回调]支持网络状态、buffer状态等回调;
  •  [视频格式]支持H.265、H.264,此外,还支持RTSP MJPEG播放;
  •  [音频格式]支持AAC/PCMA/PCMU;
  •  [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模式硬解和普通模式硬解码;
  •  [RTSP模式设置]支持RTSP TCP/UDP模式设置;
  •  [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换;
  •  [RTSP超时设置]支持RTSP超时时间设置,单位:秒;
  •  [RTSP 401认证处理]支持上报RTSP 401事件,如URL携带鉴权信息,会自动处理;
  •  [缓冲时间设置]支持buffer time设置;
  •  [首屏秒开]支持首屏秒开模式;
  •  [复杂网络处理]支持断网重连等各种网络环境自动适配;
  •  [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
  •  [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES;
  •  [实时静音]支持播放过程中,实时静音/取消静音;
  •  [实时音量调节]支持播放过程中实时调节音量;
  •  [实时快照]支持播放过程中截取当前播放画面;
  •  [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
  •  [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
  •  [渲染镜像]支持水平反转、垂直反转模式设置;
  •  [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
  •  [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
  •  [解码前视频数据回调]支持H.264/H.265数据回调;
  •  [解码后视频数据回调]支持解码后YUV/RGB数据回调;
  •  [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调;
  •  [音视频自适应]支持播放过程中,音视频信息改变后自适应;
  •  [扩展录像功能]完美支持和录像SDK组合使用。

VLC和SmartPlayer延迟比较

本次播放的是海康2560*1440分辨率,8M码率的rtsp流,延迟对比如下:

可以看到,vlc延迟在1.5秒左右,大牛直播SDK的SmartPlayer的延迟在200来毫秒,在对延迟不敏感的场景下,vlc也是个不错的选择,如果对延迟和稳定性要求非常高的场景,SmartPlayer更胜一筹。以上是二者的比较,感兴趣的开发者,可以单独跟我探讨。

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

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

相关文章

28. Three.js案例-创建圆角矩形并进行拉伸

28. Three.js案例-创建圆角矩形并进行拉伸 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 3D 场景的主要渲染器。 构造器 WebGLRenderer( parameters : Object ) 参数类型描述parametersObject渲染器的配置参数,可选。 …

启明智显ZX7981PC:5G时代的新选择,全屋网络无缝覆盖

在这个飞速发展的5G时代,每一个细微的科技进步都在推动着我们的生活向更加智能、便捷的方向发展。近日,启明智显再次引领科技潮流,正式发布其最新的5G CPE产品——ZX7981PC。作为继7981PG与7981PM之后的又一次迭代升级,ZX7981PC凭…

Qt控件的盒子模型,了解边距边线和内容区

这篇专门讲讲一个控件在绘制时的视觉样式。我们平常在对控件设置样式时,需要设置控件的一些外边距,内边距,边线,还有文字内容,贴上图片等。那么对于一个控件,到底怎么实现这些设置的呢? 先看下面…

docker简单私有仓库的创建

1:下载Registry镜像 导入镜像到本地中 [rootlocalhost ~]# docker load -i registry.tag.gz 进行检查 2:开启Registry registry开启的端口号为5000 [rootlocalhost ~]# docker run -d -p 5000:5000 --restartalways registry [rootlocalhost ~]# dock…

操作系统(5)进程

一、定义与特点 定义:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 特点: 动态性:进程是动态创建的,有它自身的生命周期,…

OLLAMA+FASTGPT+M3E 大模型本地化部署手记

目录 1.安装ollama 0.5.1 2.下载大模型 qwen2.5 3b 3.开启WSL 4.更新wsl 5.安装ubuntu 6.docker下载 6.1 修改docker镜像源 6.2 开启WSL integration 7.安装fastgpt 7.1 创建fastgpt文件夹 7.2 下载fastgpt配置文件 8.启动容器 9.M3E下载 9.1 下载运行命令 9.2…

[创业之路-190]:《华为战略管理法-DSTE实战体系》-2-华为DSTE战略管理体系概要

目录 一、DSTE战略管理体系与BLM的关系 1、DSTE战略管理体系概述 2、BLM模型概述 3、DSTE与BLM的关系 二、重新认识流程 1. 流程就是业务本身,流程是业务过程的可视化: 2. 流程是业务最佳路径的经验教训总结: 3. 流程是战略知识资产、…

强化学习路径规划:基于SARSA算法的移动机器人路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码

一、SARSA算法概述 SARSA(State-Action-Reward-State-Action)是一种在线强化学习算法,用于解决决策问题,特别是在部分可观测的马尔可夫决策过程(POMDPs)中。SARSA算法的核心思想是通过与环境的交互来学习一…

ABAQUS进行焊接仿真分析(含子程序)

0 前言 焊接技术作为现代制造业中的重要连接工艺,广泛应用于汽车、船舶、航空航天、能源等多个行业。焊接接头的质量和性能直接影响到结构件的安全性、可靠性和使用寿命。因此,在焊接过程中如何有效预测和优化焊接过程中的热效应、应力变化以及材料变形等问题,成为了焊接研…

electron常用方法

一,,electron设置去除顶部导航栏和menu 1,electron项目 在创建BrowserWindow实例的main.js页面添加frame:false属性 2,electron-vue项目 在src/main/index.js文件下找到创建窗口的方法(createWindow)&…

location和重定向、代理

location匹配的规则和优先级 在nginx当中,匹配的对象一般是URI来匹配 http://192.168.233.62/usr/local/nginx/html/index.html 182.168.233.61/ location匹配的分类: 多个location一旦匹配其中之一,不在匹配其他location 1、精确匹配 …

用拉普拉斯变换的方差算法实现相机自动对焦

使用拉普拉斯变换的方差来计算图像的清晰度的主要原因是拉普拉斯算子可以有效检测图像的边缘和高频细节。图像的清晰度与边缘强度和高频分量的丰富程度密切相关,以下是更详细的解释: 1. 拉普拉斯算子的作用 拉普拉斯算子是一种二阶导数算子,定义为: 它可以在图像中检测快…

【考前预习】3.计算机网络—数据链路层

往期推荐 【考前预习】2.计算机网络—物理层-CSDN博客 【考前预习】1.计算机网络概述-CSDN博客 浅谈云原生--微服务、CICD、Serverless、服务网格_云原生cicd-CSDN博客 子网掩码、网络地址、广播地址、子网划分及计算_子网广播地址-CSDN博客 浅学React和JSX-CSDN博客 目录 1.数…

【Kafka】Kafka-Eagle 和 Kafka-UI 的安装使用

前言 Kafka Eagle 提供了完善的管理页面,可以监控 Kafka 集群的整体运行情况,很方便的去管理和可视化 Kafka 集群的一些信息,例如 Broker 详情、性能指标趋势、Topic 集合、消费者信息等,在生产环境中经常使用。 一、MySQL 环境…

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层,它用于标识一台网络设备,其中IP地址分为两个部分,网络地址和主机地址,通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言,它细分为五类,A,B,C,D,E,…

TÜLU 3: Pushing Frontiers inOpen Language Model Post-Training

模型:https://huggingface.co/allenai 技术报告:https://allenai.org/papers/tulu-3-report.pdf 数据集:https://huggingface.co/collections/allenai/tulu-3-datasets-673b8df14442393f7213f372 GitHub:https://github.com/al…

【卷积神经网络】LeNet实践

模型建立 数据初始化根据模型搭建前向传播打印模型结构 前向传播数据初始化 def __init__(self):super(LeNet, self).__init__()# 第一层卷积层:# 输入:灰度图像 (1通道,大小 28x28)# 输出:6个特征图 (大小 28x28, 通过padding2保…

ubuntu20.04复现 Leg-KILO

这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:出错: 使用多线程编译错误1: stdlib.h: 没有那个文件或目录错误2:er…

python学习笔记—7—变量拼接

1. 字符串的拼接 print(var_1 var_2) print("supercarry" "doinb") name "doinb" sex "man" score "100" print("sex:" sex " name:" name " score:" score) 注意: …

Redis - 消息队列 Stream

一、概述 消息队列 定义 消息队列模型:一种分布式系统中的消息传递方案,由消息队列、生产者和消费者组成消息队列:负责存储和管理消息的中间件,也称为消息代理(Message Broker)生产者:负责 产…