Android平台RTSP|RTMP播放器PK:VLC for Android还是SmartPlayer?
好多开发者,希望在Android端低延迟的播放RTMP或RTSP流,本文就目前市面上主流2个直播播放框架,做个简单的对比。
VLC for Android
VLC for Android 是一款功能强大的多媒体播放器,具有以下特点和功能:
- 广泛的格式支持:
- 视频格式:支持 MKV、MP4、AVI、MOV、OGG、FLAC、TS、M2TS、WV、AAC 等众多常见的视频格式。无论是主流的视频文件,还是一些相对小众的格式,VLC for Android 都能很好地兼容播放。
- 音频格式:支持 MP3、AAC、Vorbis、FLAC、ALAC、WMA、MIDI 等音频编码格式,对于各种音乐文件也能轻松播放,并且提供高质量的音频输出。
- 编解码器集成:包含了所有常见的编解码器,无需用户单独下载安装,使用起来非常方便,能够直接播放大多数的媒体文件。
- 强大的播放功能:
- 网络流播放:可以直接播放 HTTP、FTP、RTSP 等协议的网络流媒体内容,这对于观看在线视频、网络直播等非常有用。比如,用户可以直接输入 RTSP 视频流地址来播放监控视频或其他实时流媒体。
- 多轨支持:支持多轨音频和字幕,对于包含多个音频轨道或字幕轨道的视频文件,可以方便地进行切换和选择。
- 播放速度控制:可调节播放速率,用户可以根据自己的需求选择慢放、快放等不同的播放速度,方便进行学习、研究或者快速浏览视频内容。
- 音频增强:内建音效增强功能,例如均衡器和环绕声设置等,可以让用户根据自己的喜好调整音频效果,获得更好的听觉体验。
- 自动旋转和宽高比调整:支持自动旋转功能,能够根据设备的方向自动调整视频的播放方向;同时还可以进行宽高比调整,以适应不同的屏幕尺寸和显示需求。
- 其他特色功能:
- 媒体库管理:具有一个音频和视频文件的媒体库,允许用户直接浏览文件夹,方便地管理和查找自己的媒体文件。
- 字幕支持:能够自动检测并同步显示各种格式的字幕文件,包括嵌入式字幕和外部字幕文件,对于观看外语视频或者有字幕需求的用户非常友好。
- 无广告和开源:作为一个开源项目,VLC for Android 没有内置广告,用户体验更加纯净。并且,其源代码开放,开发者可以对其进行修改和扩展,满足个性化需求。
- 性能和兼容性:
- 硬件加速:利用了 Android 的硬件加速特性,优化了播放质量,在支持硬件解码的设备上能够提供更流畅的播放体验。不过,如果设备的 Android 版本较低,可能只能使用软件解码。
- 兼容性好:支持 Android 版本 2.2(平台 - 8)及以上的旧版本,以及 Android 版本 4.2(平台 - 14)及以上的当前版本,同时支持 ARM v7、ARMv8 / AArch64、MIPS 和 x86 等多种处理器架构,适用于大多数的 Android 设备。
SmartPlayer
大牛直播 SDK 的 SmartPlayer 是一个功能强大的流媒体播放器,具有以下特点和功能:
- 支持的协议和格式:
- 协议支持:支持 RTSP、RTMP 等常见的流媒体传输协议,这使得它可以广泛应用于各种直播、监控等场景。
- 视频格式支持:支持 H.265、H.264 等视频编码格式,并且还支持 RTSP MJPEG 播放,对于不同编码格式的视频流都有良好的兼容性。
- 音频格式支持:支持 AAC、PCMA、PCMU 等音频格式,能够提供高质量的音频播放。
- 播放性能方面:
- 低延迟:具有超低延迟的特点,在机器性能没有瓶颈的前提下,其 RTSP 播放器和 RTMP 播放器延迟可以达到业内领先的水平,适用于对实时性要求较高的场景,如安防监控、在线教育、互动直播等。
- 多实例播放:支持多实例播放,可以同时播放多个视频流,满足一些复杂的应用需求。
- 高效的资源占用:资源占用低,能够在各种硬件条件下流畅运行,不会对设备的性能造成过大的负担。
- 功能特性:
- 事件回调:支持网络状态、buffer 状态等事件的回调,方便开发者实时监控播放状态,以便及时进行处理和调整。
- 画面设置:可以设置视频画面的填充模式,如填充整个 view、等比例填充 view 等;在 Android 平台,还支持设置 SurfaceView 模式下的 render 类型、抗锯齿效果等,以满足不同的画面显示需求。
- 硬解码设置:支持 H.264 和 H.265 的硬解码,并且在硬解码不支持的情况下可以自动适配到软解码,保证视频的正常播放。同时,还可以设置视频硬解码下的 MediaCodec 自行绘制模式,提高硬解码的兼容性和效率。
- 音频控制:支持播放过程中的实时静音 / 取消静音、实时调节音量等音频控制操作,方便用户根据需要进行音频的调整。
- 实时快照:支持在播放过程中截取当前播放画面,对于一些需要保存视频截图的场景非常有用。
- 快速切换:支持播放过程中快速切换其他 URL,能够在不同的视频流之间快速切换,适用于一些需要切换视角或数据源的应用场景。
- 网络适应性:
- 模式设置与切换:支持 RTSP TCP/UDP 模式设置,并且可以根据网络状况自动切换 RTSP TCP、UDP 模式,以保证在不同网络环境下都能够稳定播放。
- 断网重连:具备断网重连等网络环境自动适配的功能,当网络出现异常时能够自动尝试重新连接,提高了播放的稳定性和可靠性。
总结
- 开发者与背景:
- VLC:由 VideoLAN 团队开发和维护的一款开源媒体播放器。它最初是为学校项目开发,后来逐渐发展成为全球流行的媒体播放器之一,具有广泛的用户基础和活跃的开源社区。
- 大牛直播 SDK:是由上海视沃信息科技有限公司开发的一套用于直播相关功能的软件开发工具包。专注于为开发者提供直播相关的技术解决方案,在直播领域有一定的专业性和针对性。
- 功能侧重:
- VLC:是一个通用的多媒体播放器,支持众多的音频和视频格式,包括本地文件播放、网络流媒体播放等。功能较为全面,除了基本的播放功能外,还提供播放列表管理、音频和视频效果调整、字幕支持、流媒体服务器和客户端、媒体转码等高级功能。
- 大牛直播 SDK:主要侧重于直播相关的功能,例如低延迟的直播播放、多实例播放、网络状态和缓冲状态的事件回调、支持多种音视频编码格式的直播流播放等。在直播场景下的性能和功能优化方面更为突出,适用于对直播延迟、稳定性等要求较高的应用场景。
- 性能表现:
- VLC:在播放各种格式的媒体文件方面具有良好的兼容性和稳定性,但在一些特定的直播场景下,可能对于低延迟等性能方面的优化不如专门的直播 SDK。不过,它的优势在于可以作为一个独立的播放器应用使用,也可以集成到其他应用中提供媒体播放功能。
- 大牛直播 SDK:针对直播场景进行了深度设计,通常具有较低的延迟和较高的稳定性,能够满足实时直播的需求。例如,大牛直播 SDK 的延迟可以达到毫秒级(150-300ms),在一些对实时性要求较高的直播应用中具有优势。
- 平台支持与集成难度:
- VLC:支持几乎所有主流的操作系统,包括 Windows、MacOS、Linux、iOS 和 Android 等,具有良好的跨平台性。在 Android 平台上集成 VLC 相对来说需要一定的技术基础,需要从官方仓库获取源代码、配置开发环境、构建项目等步骤,但也有一些非官方的 SDK 可以简化集成过程。
- 大牛直播 SDK:支持 Android、iOS 、Windows 、Linux(x86_64|aarch64)平台,开发者可以根据提供的文档和示例快速上手。
- 商业使用与授权:
- VLC:开源且免费,用户可以自由使用和修改其源代码,没有商业授权方面的限制,非常适合个人开发者和小型项目使用。
- 大牛直播 SDK:通常需要根据开发者的具体需求和使用场景进行商业授权,会有一定的费用。但相应地,开发者可以获得专业的技术支持和服务,对于商业项目来说更有保障。
总结一下,VLC for Android强调其功能丰富、性能出色、兼容性好等优点,更适合对延迟要求不是很苛刻的点播场景下,SmartPlayer是一个功能强大、性能优异、具有高度可定制性的流媒体播放器,适用于各种对视频播放质量和实时性要求较高的应用场景。在使用时,开发者需要根据具体的需求和场景进行相应的配置和优化,以充分发挥其优势。
相关文章:

Android平台RTSP|RTMP播放器PK:VLC for Android还是SmartPlayer?
好多开发者,希望在Android端低延迟的播放RTMP或RTSP流,本文就目前市面上主流2个直播播放框架,做个简单的对比。 VLC for Android VLC for Android 是一款功能强大的多媒体播放器,具有以下特点和功能: 广泛的格式支持…...

IDEA下面的Services不见了(解决方案)
大家使用IDEA有时候新打开个项目这个东西不会自动出现如何解决 配置方法: 右上角打开进入Edit Configurations 进入后我们看到里面是没有SpringBoot相关内容的 点击加号选择SpringBoot 然后Apply Ok即可,现在IDEA下面就会出现Service了,打…...

【pyspark学习从入门到精通7】DataFrames_2
目录 创建 DataFrames 生成我们自己的 JSON 数据 创建 DataFrame 创建临时表 简单的 DataFrame 查询 DataFrame API 查询 SQL 查询 创建 DataFrames 通常,您会通过使用 SparkSession(或在 PySpark shell 中调用 spark)导入数据来创建 …...

Server-Sent Event(SSE) GPT场景实现
关于SSE的基本概念可以看一下阮一峰老师的这篇文章:Server-Sent Events教程。 现在比较常见的场景是gpt回答的时候类似下图这种打字机的情况,因为AI一般响应时间会比较长,使用这种方式能让人别等那么久,是一个相对比较良好的用户…...
美国Honeywell霍尼韦尔气体分析侦测器传感器MIDAS-K-HCL说明书
上海德奥达 ---Honeywell霍尼韦尔气体分析侦测器传感器MIDAS-K-HCL是一款用于检测氯化氢气体的高性能传感器。以下是该传感器的技术参数和描述:技术参数:-测量范围:0-50ppm-灵敏度:0.5ppm-响应时间:≤30秒-电源&…...
L1练习-鸢尾花数据集处理(分类/聚类)
背景 前文(《AI 自学 Lesson1 - Sklearn(开源Python机器学习包)》)以鸢尾花数据集的处理为例,本文将完善其代码,在使用 sklearn 的部分工具包基础上,增加部分数据预处理、数据分析和数据可视化…...

javaweb以html方式集成富文本编辑器TinyMce
前言: 单一的批量图片上传按钮,禁用tinymce编辑器,但是还可以操作图片编辑; 多元化格式的富文本编辑要求; 采用tinymce实现。 附: tinymce中文手册网站: http://tinymce.ax-z.cn/download-all.…...

大学生福音!用GPT-4o几分钟内轻松读懂一篇论文!
文章目录 一、读论文智能体:PDFAI操作指导阅读论文上传论文并分析进一步研究导出可用代码 二、感受 一、读论文智能体:PDFAI 操作指导 ChatGPT 4o国内直接访问地址:https://share.xuzhugpt.cloud/ 上plus的车 输入购买的授权码即可。 默认…...
微信小程序昵称获取
<view class"shouquan_list"> <label>昵称</label> <input type"nickname" value"{{nichengshoudong}}" bindinput"bindKeyInputnicheng" placeholder"请输入昵称" placeholder-style"color:r…...

SQL进阶技巧:如何找出开会时间有重叠的会议室?| 时间区间重叠问题
目录 0 场景描述 1 数据准备 2 问题分析 方法1:利用 lateral view posexplode()函数将表展开成时间明细表 方法2:利用数学区间讨论思想求解 3 小结 如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选…...
Educational Codeforces Round 170 (Rated for Div. 2) D 题解
to sum of:前三题都是究极水题,补补D题吧,dp太钛肽弱了.. Problem - D - Codeforces--Attribute Checks 思路:首先得坚定地确定m^2,然后剩下的复杂度思考怎么优化.. key:每一个0只考虑影响到下一个0之间的数字!! 定义dp[i][j]为,在有i个能力点时.点了…...

NeRS: Neural Reflectance Surfaces for Sparse-view 3D Reconstruction in the Wild
阅读记录: 1. 2.优点1:我们的方法仅依赖于近似的相机位姿估计和粗略的类别级形状模板。 3.我们的关键见解是,我们可以强制执行基于表面的 3D 表示,而不是允许广泛用于体积表示的无约束密度。重要的是,这允许依赖于视…...
【Linux】su 命令的运行原理以及su切换用户默认继承环境配置
一、su 命令的运行原理 原理解释: su(switch user)命令用于在Linux和Unix系统中切换用户身份。 当你执行 su 命令时,系统会创建一个新的进程,通常是一个新的 shell 实例。这个新进程会以目标用户的身份运行&#…...

libtorch环境配置
环境配置 建议在linux上配置对应环境 可以在autoDL上租一个服务器来搭建,带有pytorch的环境 https://www.autodl.com/home 我自己的win电脑上安装了pytorch,但是配置时会报错,于是到ubuntu上配置 电脑上装有pytorch的就不需要再下载libtorc…...

【C语言】define宏定义与const修饰限定
两者都是将字符替换为相应的数值。 区别在于: #define宏定义纸进行字符串替换,无类型检查 const修饰符限定变量为只读变量 #include <stdio.h> #define PI 3.14159 //符号常量 /* 功能:宏定义与const修饰符限定 时间:20…...
基于深度学习的基于视觉的机器人导航
基于深度学习的视觉机器人导航是一种通过深度学习算法结合视觉感知系统(如摄像头、LiDAR等)实现机器人在复杂环境中的自主导航的技术。这种方法使机器人能够像人类一样使用视觉信息感知环境、规划路径,并避开障碍物。与传统的导航方法相比&am…...
苍穹外卖学习笔记(二十三)
拒单 OrderController /*** 拒单*/PutMapping("/rejection")ApiOperation("拒单")public Result rejection(RequestBody OrdersRejectionDTO ordersRejectionDTO) throws Exception {orderService.rejection(ordersRejectionDTO);return Result.success(…...

vLLM 推理引擎性能分析基准测试
文章目录 分析步骤案例案例描述测试数据集 原始数据〇轮测试(enable-64)一轮测试(enable-128)二轮测试(enable-256)三轮测试(enable-512)四轮测试(enable-2048࿰…...

图像增强论文精读笔记-Kindling the Darkness: A Practical Low-light Image Enhancer(KinD)
1. 论文基本信息 论文标题:Kindling the Darkness: A Practical Low-light Image Enhancer 作者:Yonghua Zhang等 发表时间和期刊:2019;ACM MM 论文链接:https://arxiv.org/abs/1905.04161 2. 研究背景和动机 现有…...
HALCON数据结构之字符串
1.1 String字符串的基本操作 *将数字转换为字符串或修改字符串 *tuple_string (T, Format, String) //HALCON语句 *String: T $ Format //赋值操作*Format string 由以下四个部分组成: *<flags><field width>.<precision><conversion 字符&g…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
flow_controllers
关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...