跨平台RTSP播放器之VLC Media Player还是SmartPlayer?

好多开发者纠结,RTSP流播放,到底是用开源的VLC Media Player还是大牛直播SDK的SmartPlayer?针对此,本文做个简单的技术探讨,方便开发者根据实际需要,做适合自己场景的选择:

VLC Media Player

使用VLC Media Player播放RTSP流视频是一个简单且直接的过程。VLC Media Player是一款功能强大且开源的跨平台多媒体播放器,支持多种音频和视频格式以及流媒体协议,包括RTSP。以下是详细的步骤说明:

1. 安装VLC Media Player

首先,确保你的Windows系统上已经安装了VLC Media Player。如果尚未安装,可以从VLC官方网站或其他可信赖的软件下载平台下载并安装。

2. 打开VLC Media Player

双击桌面上的“VLC media player”图标,或者通过开始菜单中的快捷方式打开VLC Media Player。

3. 打开网络串流

在VLC Media Player的顶部菜单栏中,选择“媒体”(Media)选项。然后,在下拉菜单中选择“打开网络串流”(Open Network Stream),或者直接按快捷键“Ctrl+N”。

4. 输入RTSP URL

在弹出的“打开媒体”窗口中,你会看到一个文本输入框。在这个输入框中,输入你想要播放的RTSP流的URL。这个URL通常由流媒体服务或内容提供商提供,格式通常为rtsp://url_ip_address:port_number/mount_point。例如:rtsp://192.168.0.101:8554/stream1

5. 配置选项(可选)

如果你需要配置其他选项,如字幕、缓存大小等,可以在“打开媒体”窗口的底部选项卡中进行设置。但对于大多数直播流来说,默认设置通常就足够了。

6. 播放RTSP流

输入URL并配置好选项后,点击窗口右下角的“播放”(Play)按钮。VLC Media Player将开始连接到RTSP流,并在连接成功后开始播放视频。

SmartPlayer

SmartPlayer是大牛直播SDK开发的跨平台低延迟播放器,始于2015年,好多场景已慢慢从点播模式到直播过渡,大家对RTSP直播延迟要求越来越高,所以有了全自研内核的SmartPlayer,经过多年迭代,目前支持的功能如下:

  • [支持播放协议]RTSP毫秒级延迟;
  •  [多实例播放]支持多实例播放;
  •  [事件回调]支持网络状态、buffer状态等回调;
  •  [视频格式]H.265,H.264;
  •  [音频格式]支持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模式硬解和普通模式硬解码;
  •  [缓冲时间设置]支持buffer time设置;
  •  [首屏秒开]支持首屏秒开模式;
  •  [低延迟模式]支持类似于线上娃娃机等直播方案的超低延迟模式设置;
  •  [复杂网络处理]支持断网重连等各种网络环境自动适配;
  •  [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
  •  [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES;
  •  [实时静音]支持播放过程中,实时静音/取消静音;
  •  [实时快照]支持播放过程中截取当前播放画面;
  •  [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
  •  [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
  •  [渲染镜像]支持水平反转、垂直反转模式设置;
  •  [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
  •  [ARGB叠加]Windows平台支持ARGB图像叠加到显示视频;
  •  [解码前视频数据回调]支持H.264/H.265数据回调;
  •  [解码后视频数据回调]支持解码后YUV/RGB数据回调;
  •  [解码后视频数据缩放回调]Windows平台支持指定回调图像大小的接口(可以对原视图像缩放后再回调到上层);
  •  [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调;
  •  [音视频自适应]支持播放过程中,音视频信息改变后自适应;
  •  [扩展录像功能]支持RTSP/RTMP H.264、扩展H.265流录制,支持PCMA/PCMU转AAC后录制,支持设置只录制音频或视频等。

VLC还是SmartPlayer?

废话不多说,先上图,同时播放海康2560*1440分辨率8M码率的流数据(海康摄像头对着手机计时器),效果如下,可以看到,SmartPlayer的延迟大概220毫秒,VLC的延迟大概1.4秒,如果是做平衡操控等场景,vlc的延迟延迟超过1秒,已无法满足操控类低延迟场景:

我们之前blog写过RTSP直播播放开发设计思路,总结下来如下:

1. 低延迟:大多数RTSP的播放都面向直播场景,所以,如果延迟过大,严重影响体验,所以,低延迟是衡量一个好的RTSP播放器非常重要的指标,目前大牛直播SDK的RTSP直播播放延迟比开源播放器更优异,而且长时间运行下,不会造成延迟累积;

2. 音视频同步处理有些播放器为了追求低延迟,甚至不做音视频同步,拿到audio video直接播放,导致a/v不同步,还有就是时间戳乱跳等各种问题,大牛直播SDK提供的播放器,具备好的时间戳同步和异常时间戳矫正机制;

3. 支持多实例:大牛直播SDK提供的播放器支持同时播放多路音视频数据,比如4-8-9窗口,大多开源播放器对多实例支持不太友好;

4. 支持buffer time设置:在一些有网络抖动的场景,播放器需要支持buffer time设置,一般来说,以毫秒计,开源播放器对此支持不够友好;

5. TCP/UDP模式设定自动切换:考虑到好多服务器仅支持TCP或UDP模式,一个好的RTSP播放器需要支持TCP/UDP模式设置,如链接不支持TCP或UDP,大牛直播SDK可自动切换,,开源播放器不具备自动切换TCP/UDP能力;

6. 实时静音:比如,多窗口播放RTSP流,如果每个audio都播放出来,体验非常不好,所以实时静音功能非常必要,开源播放器不具备实时静音功能;

7. 视频view旋转:好多摄像头由于安装限制,导致图像倒置,所以一个好的RTSP播放器应该支持如视频view实时旋转(0° 90° 180° 270°)、水平反转、垂直反转,开源播放器不具备此功能;

8. 支持解码后audio/video数据输出:大牛直播SDK接触到好多开发者,希望能在播放的同时,获取到YUV或RGB数据,进行人脸匹配等算法分析,开源播放器不具备此功能;

9. 实时快照:感兴趣或重要的画面,实时截取下来非常必要,一般播放器不具备快照能力,开源播放器不具备此功能;

10. 网络抖动处理(如断网重连):稳定的网络处理机制、支持如断网重连等,开源播放器对网络异常处理支持较差;

11. 长期运行稳定性:不同于市面上的开源播放器,大牛直播SDK提供的Windows平台RTSP直播播放SDK适用于数天长时间运行,开源播放器对长时间运行稳定性支持较差;

12. log信息记录:整体流程机制记录到LOG文件,确保出问题时,有据可依,开源播放器几无log记录。

13. 实时下载速度反馈:大牛直播SDK提供音视频流实时下载回调,并可设置回调时间间隔,确保实时下载速度反馈,以此来监听网络状态,开源播放器不具备此能力;

14. 异常状态处理Event状态回调如播放的过程中,断网、网络抖动、等各种场景,大牛直播SDK提供的播放器可实时回调相关状态,确保上层模块感知处理,开源播放器对此支持不好;

15. 关键帧/全帧播放实时切换:特别是播放多路画面的时候,如果路数过多,全部解码、绘制,系统资源占用会加大,如果能灵活的处理,可以随时只播放关键帧,全帧播放切换,对系统性能要求大幅降低。

总结

通过上述VLC Media Player和SmartPlayer两个播放器的功能说明和技术比较,相信大家很容易做出自己的选择,如果是点播需求,VLC Media Player足够用了,如果是跨平台超低延迟的直播诉求,可以试试SmartPlayer,更能满足低延迟技术诉求。以上抛砖引玉,感兴趣的开发者,可以单独跟我沟通交流。

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

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

相关文章

flunet瞬态处理时均问题

fluent处理时均问题 最近遇到个同学,处理心脏跳动的时均问题,由于仅想取部分稳定时间段的时均数据,fluent的自动采样仅能对全部时间做处理,就存在问题了,网上看到两篇很详细的文章,记录下。 具体网址&…

截取pdf中的部分内容,又保证内容不失真,实现方式

文章目录 0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载 0.为什么需要截取pdf 如果直接截图工具截图的话,里面的文字和图片内容会出现失真的情况,但是我们希望pdf空白部分的内容不要,这个时候就需要截取pdf工具 1…

企业内部社区在企业起到什么作用?

企业内部社区是传播企业文化、促进员工互动和提升员工参与度的重要平台。通过企业内部社区,员工可以更好地理解和认同企业的核心价值观和文化理念,增强凝聚力和团队合作精神,进而提升企业的绩效和竞争力。企业内部社区有助于营造积极向上的工…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM 对象创建与内存分配机制(重要) 3.1 对象的创建过程 3.2 对象的内存分配策略 4.JVM的内存模型 5.那些是GC Roots的对象有哪些? 1.类加载过程 通过类…

nacos适配人大金仓以及达梦-2.41

不想折腾直接查看源码 里面打包好了发行版本能直接使用 想折腾的具体看

白酒酿造:传统工艺与现代科技的整合

在千年的历史长河中,白酒酿造技艺如一颗璀璨的明珠,闪烁着中华文明的智慧光芒。如今,随着科技的飞速发展,传统酿造工艺与现代科技在这片古老的土地上交织碰撞,共同书写着白酒酿造的新篇章。豪迈白酒(HOMANL…

分析源码学习c++(srs中http客户端)

文章目录 背景基础知识c标准库虚函数虚函数使用方法 虚析构函数 HTTP客户端使用方法TCP传输层分析使用方法结构分析连接函数读写函数 协议层分析初始化函数发送请求响应数据解析 背景 通过阅读源码,编写分析笔记来学习C是一种非常有效且深入的方法,能帮助…

Java导入包com.alibaba.fastjson2.JSONObject

com.alibaba.fastjson2.JSONObject 是阿里巴巴的 fastjson 库中的一个类,用于处理 JSON 数据。 这里提供一些常见的使用示例和可能的问题解决方法。 解决方案和示例代码: 创建 JSONObject 对象: import com.alibaba.fastjson2.JSONObject;JSONObject jsonObject …

Nginx: 使用KeepAlived配置实现虚IP在多服务器节点漂移及Nginx高可用原理

使用KeepAlived配置实现虚IP在多服务器节点漂移 1 )环境准备 2台 linux , 一主一备 节点1:192.168.184.30 CentOS 7 Master节点2:192.168.184.40 CentOS 7 BackupVIP 192.168.184.50 安装 KeepAlived, $ yum install keepalived 注意&#x…

Jmeter、Python、Postman测试工具对比

一、JMeter 总结:适合对代码不敏感的使用人员,不会代码也可以完成接口自动化,设计框架。适合紧急迭代的项目。 JMeter接口测试的优势 小巧轻量级,并且开源免费,社区接受度高,比较容易入门支持多协议&…

MCU官方IDE软件安装及学习教程集合 — STM32CubeIDE(STM32)

简介 各MCU厂商为保证产品的市场地位以及用户体验,不断的完善自己的产品配套,搭建自己的开发生态,像国外ST公司,国内的GD(兆易创新),AT(雅特力)等等。目前就开发生态而言…

音频原始数据PCM

PCM全称是脉冲编码调制数据。PCM数据是未经过压的音频数据,它由模拟信号信号经过采样、编码等步骤抓换成的数字信号。 一、音频基础知识讲解 1.1频率 声音是由震动产生的,所以声音是有频率的,人类可以听到的声音频率大概在20HZ~20KHZ 1.2振…

Windows通过网线连接开发板共享网络

Windows端 打开更开适配器选项右键WLAN–属性–共享 右键以太网–属性–Internet协议版本4(TCP/IPv4) 记住IP地址 开发板端 查看网卡 ifconfig设置IP在同一网段 ifconfig eth0 192.168.137.2 netmask 255.255.255.0设置网关 route add default gw 192.168.137.1配置DNS su…

minio最新源码编译(处理安全扫描中跨域访问、.js.map等不安全问题) 版本:RELEASE.2024-06-26T01-06-18Z

编译前注意事项 编译基于tag为RELEASE.2024-06-26T01-06-18Z的版本处理安全扫描问题。如:敏感信息泄露、.js.map、跨域访问问题需要准备两个工程,前端工程console和minio工程, 目录结构处理: gowork/ │ └── src/├── github.com├── …

华为 HCIP-Datacom H12-821 题库 (6)

有需要题库的可以看主页置顶 V群仅进行学习交流 1.转发表中 FLAG 字段中B 的含义是? A、可用路由 B、静态路由 C、黑洞路由 D、网关路由 答案:C 解析: 可用路由用U 表示,静态路由用 S 表示,黑洞路由用 B 表示&#x…

原油市场“闪崩”,国际油价单日下跌超4%!

KlipC报道:当地时间9月3日周二,延续早些时候的跌势,国际油价暴跌。WTI原油收跌近4.4%,逼近70美元大关;布伦特原油跌破75美元,跌幅4.86%,均抹去今年所有涨幅。 据悉,受到威胁后逃离了…

系统编程-数据库

数据库 目录 数据库 引入 1、先安装数据库 2、数据库设置密码 3、数据库的进入和退出(前提 你的密码更改过了) 数据库的基本操作 1、显示所有的数据库 2、创建数据库 3、删除数据库 4、选择数据库 在数据库中对表进行操作 1、查看当前数据库中的表 2、在数据库中…

如何在算家云搭建Qwen2(智能对话)

一、Qwen2简介 Qwen2 是由阿里云通义千问团队研发的新一代大型语言模型系列,它在多个方面实现了技术的飞跃和性能的显著提升。以下是对 Qwen2 的详细介绍: GitHub - QwenLM/Qwen2: Qwen2 is the large language model series developed by Qwen team, …

GD32 Flash读写与存储数据操作,亲测可用

这里写自定义目录标题 联系作者请加一、GD32 Flash特性二、Flash读写操作1. Flash读取操作2. Flash写入操作三、注意事项四、其他方法联系作者请加 如有技术问题及项目需求请加作者微信! 一、GD32 Flash特性 存储空间划分:GD32的Flash存储空间通常分为主存储块和信息块。主存…

SpringBoot学习(5)(springboot整合mybatis)

目录 1、整合mybatis基本介绍 (1)spring整合mybatis (2)springboot整合mybatis 2、案例(根据用户id,返回用户所有信息) (1)新建数据库连接、数据库、表。插入值 &a…