论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
移动端开发
›
IOS
›
移动端开源播放器对比与选型(ExoPlayer/ijkplayer/VLC/ ...
移动端开源播放器对比与选型(ExoPlayer/ijkplayer/VLC/GStreamer/SmarterP ...
九天猎人
金牌会员
|
2024-6-24 01:59:36
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
988
|
帖子
988
|
积分
2964
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
一、各播放器简述
1、ExoPlayer
ExoPlayer
是 Google 推出的开源播放器,重要是集成了Android 提供的一套解码体系来解析视频和音频,将 MediaCodec 封装地非常美满,并参加了对 DASH 和 HLS 等直播协议的支持,形成了一个性能精良,播放稳定性较好的一个开发播放器。
Github
: https://github.com/google/ExoPlayer
starforkissue20.5k5.9k723
跨平台特性:只支持 Android
优点:
接入包体积小,1.1M
护团队强大,更新速率快
缺点:
不跨平台,不太适合直播
可扩展性一样平常,视频软解接入较麻烦
适合播放场景简单的项目,播放过程中无切换码流的环境
2、ijkplayer
ijkplayer
是 Bilibili 公司开源的播放器,基于 FFmpeg 开发,
支持 Android 的 MediaCodec、iOS 的 VideoToolBox 硬解码
,可以实现软硬解码自由切换,同时得益于 FFmpeg 的能力,也能支持多种流媒体协议,多种音视频编码格式,具有很高的灵活性,可以定制实现本身特色的播放器。
Github
: https://github.com/bilibili/ijkplayer
starforkissue31.2k8k2.7k
跨平台特性:跨平台,支持 Android/iOS
优点:
结构比较简单,根本以 ffplay 展开,入手相对简单
包体积比 VLC 小
应用比较广泛, issue 和资料比较丰富
缺点:
可扩展性较差,根本上没有提供 modules 供开发者二次开发
官方现在根本不维护,不更新
3、VLC
VLC
是 VideoLAN 计划所研发的工程,最早于 1996 年开始,是一个完全的跨平台播放器。VLC 的团体框架是计划成一套 module 的管理机制,将功能分类并抽象成 modules。
Github
: https://github.com/videolan/vlc
starforkissue10.5k3.3k/
跨平台特性:跨平台,支持 Android/iOS/MacOS/Windows/Linux/BSD/Haiku
优点:
跨平台,兼容性好
功能全面,支持 rtsp、rtmp、ftp、http、https 等协议
代码完全解耦,modules 相互独立,不影响,引入新 modules 方便
维护团队强大,更新频仍
缺点:
Android 平台编译出的包较大,有 16M 左右;
在 Android 平台上可能存在性能问题,必要优化
4、GStreamer
GStreamer
是一个跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步调串联起来,到达预期的结果。每个步调通过元素(Element)基于GObject对象体系通过插件(plugins)的方式实现,方便了各项功能的扩展。
Github
:https://github.com/GStreamer/gstreamer
starforkissue1.6k458/
跨平台特性:跨平台,支持 Android/iOS/Windows/Linux
优点:
GStreamer 框架是基于插件的,它的可插入组件可以或许很方便的接入到恣意的管道当中
结构清晰,具有灵活的可扩展性:所有的 GStreamer 对象都可以采用 GObject 继续的方法举行扩展,所有的插件都可以被动态装载。
缺点:
利用起来较为复杂
性能差,包体积较大
5、SmarterPlayer
SmarterPlayer
是大牛直播出品的业内为数不多致力于极致体验的超强全自研跨平台流媒体内核,通过模块化自由组合,支持实时 RTMP/RTSP 推流、RTMP/RTSP 播放器、录像、多路流媒体转发、音视频导播、动态视频合成、音频混音、直播互动、内置轻量级 RTSP 服务等,比快更快,业界真正靠谱的超低耽误直播 SDK(1 秒内,低耽误模式下 200~400ms)。
Github
: https://github.com/daniulive/SmarterStreaming
starforkissue1.4k2.7k5
跨平台特性:跨平台,支持 Android/iOS/Windows/Linux
优点:
支持多种常见的流媒体协议,例如 HLS、RTMP、FLV 等
提供了多种播放器皮肤和自界说选项
支持 P2P 网络协议,可以实现点播和直播功能
缺点:
SmartPlayer 是商业软件,必要购买授权才气利用
在某些特定的硬件和软件平台上可能存在兼容性问题
二、播放器选型结论
在选型上我个人比较倾向于选择 ijkplayer,理由如下:
ijkplayer 基于 ffmpeg,软解结果非常好,可以配置想要支持的协议,项目本身也利用 ffmpeg ,可以复用,新增的包体积较小
ijkplayer 移动端跨平台,满足双端需求,并且支持 Android 的 MediaCodec、iOS 的 VideoToolBox 硬解码,可以实现软硬解码自由切换
ijkplayer 相对简单,资料比较丰富,入手相对较快
针对官方不更新的问题,长远来看,可以基于 ijkplayer 渐渐演化迭代改造成本身的播放器
不选择其他的原因:
VLC 为了兼容所有的平台,有些库选择的不是非常公道,导致 Android 平台编出来的包很大
VLC 代码虽然高度解耦,但是用到了许多不常见的库,学习成本较大
ExoPlayer 只支持 Android
GStreamer 利用起来复杂,包体积大
SmarterPlayer 必要购买授权
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
九天猎人
金牌会员
这个人很懒什么都没写!
楼主热帖
C# 使用流读取大型TXT文本文件 ...
从洞察到决策,一文解读标签画像体系建 ...
袋鼠云平台代码规范化编译部署的提效性 ...
Flink的API分层、架构与组件原理、并行 ...
SpringBoot(八) - 统一数据返回,统一 ...
Redis命令手册
打穿你的内网之三层内网渗透 ...
JVM
微服务(三)之负载均衡(服务端和客户端) ...
锂电池基于DW01组成的过充电、过放、短 ...
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表