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)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...