开源播放器内核比较:ijkPlayer、VLC、ExoPlayer、MediaPlayer、SmartPlayer
Android 常见的视频播放器,ijkPlayer、VLC、ExoPlayer、MediaPlayer、SmartPlayer简单对比:
1、MediaPlayer
在Android系统中对于视频播放器有原生的实现MediaPlayer, 以及将MediaPlayer,SurfaceView封装在一起的VideoView, 两者都只是使用硬解码播放,
基本上只支持本地和HTTP协议的视频播放,扩展性都很差,只适合最简单的视频播放需求。
2、ijkPlayer
ijkplayer 是Bilibili公司开源的播放器实现,整合了FFMpeg, ExoPlayer, MediaPlayer等多种实现,提供了类似于MediaPlayer的API,可以实现软硬解码自由切换,自定义TextureView实现,同时得益于FFMpeg的能力,也能支持多种流媒体协议(RTSP,RTMP,HLS等),多种视频编码格式(h264, mpeg4, mjpeg),具有很高的灵活性,可以定制实现自己特色的播放器(比如支持视频缩放,视频翻转等)。
如果只是使用它进行播放,集成也较为简单,使用也和MediaPlayer差不多,但是要定制化需求,就有一定的门槛高度。
支持软硬编解码,支持倍速播放,可以定制化集成需要的功能,集成占用体积也很小。
优点:
1.ijkplayer结构比较简单,基本以ffplay展开,开发难度较小;
2.ijkplayer包比VLC小一点,经过裁剪,约为4.2M左右;
缺点:
1.ijkplayer可扩展性较差,基本上没有提供modules供开发者二次开发;
2.ijkplayer 官方维护力度小,版本更新很慢;
3、ExoPlayer
ExoPlayer 是google推出的开源播放器,主要是集成了Android 提供的一套解码系统来解析视频和音频,将MediaCodec封装地非常完善,并加入了对DASH和HLS等直播协议的支持,形成了一个性能优越,播放稳定性较好的一个开发播放器。
但也只支持硬码,如果项目中只需要支持对H264格式、以及流媒体协议比较常规(比如HTTP,HLS),基于ExoPlayer定制也是不错的选择。
优点:
1.接入包小,1.1M;
2.维护团队强大,更新速度快;
缺点:
1.不太适合直播;
2.视频解码无法接入软解,可扩展性一般;
3.适合播放场景简单的项目,播放过程中无切换码流的情况
问题:ExoPlayer 会替代MediaPlayer成为Android平台上的默认播放器吗?
不会,两个原因:
- Android 5.0 之后Android的Codec架构做了依次重大调整,放弃了AwesomePlayer
,使用NuPlayer架构,ExoPlayer 没有做过多的兼容; - ExoPlayer 目前还是一个小而轻的播放器,如果要合成到系统中,它需要调整的东西太多,代码量会变得很繁杂,很可能得不偿失;
4、VLC Media Player
VLC 是VideoLAN 计划所研发的工程,最早预1996年开始,是一个完全的跨平台播放器,适合Windows、Mac OS、Linux、Android、iOS等系统,目前完全的跨平台播放器很少,VLC是最受欢迎的一种播放器;目前累计下载13亿次,是真真正正的全球播放器;
VLC的整体框架是设计成一套module的管理机制,将功能分类并抽象成modules。
VLC main:player的main。初始化libVLC 并加载用户界面。
libVLCcore:libvlc的核心,抽象出了一个libvlc_instance_t 对象,提供modules的装载/卸载机制。
modules:modules提供具体的功能,比如上面的access,demux,decode就是以一个模块的形式存在。
External libraries:外部开源库。
优点:
1.跨平台,兼容性好;
2.功能全面,支持rtsp、rtmp、ftp、http、https等协议;
3.代码完全解耦,modules相互独立,不影响,引入新modules方便;
4.维护团队强大,更新频繁;
缺点:
1.Android平台编译出的包较大,有16M左右;
5、SmartPlayer
SmartPlayer系大牛直播SDK(Github)出品的全自研内核的RTSP和RTMP直播播放器SDK,跨平台(Windows、Android、iOS)、功能齐全、高稳定、超低延迟,超低资源占用,适用于安防、教育、单兵指挥等对延迟和稳定性要求比较苛刻的场景。
在机器性能没有瓶颈的前提下,SmartPlayer的RTSP播放器和RTMP播放器延迟是业内为数不多毫米级的。
参考链接:
https://zhuanlan.zhihu.com/p/397425806
开源播放器内核比较:ijkPlayer、VLC、ExoPlayer、MediaPlayer、SmartPlayer相关推荐
- 开源播放器 ijkplayer (一) :使用Ijkplayer播放直播视频
1.ijkplayer 编码 IjkPlayer支持硬解码和软解码. 软解码时不会旋转视频角度这时需要你通过onInfo的what == IMediaPlayer.MEDIA_INFO_VIDEO_R ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)...
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
- 开源播放器 Banshee 发布 1.0 beta 2
Banshee也是个很是不错的开源播放器,同时也是SuSE的内置播放器,默许支持靠山播放,消息区域告诉,可以快速跳过以后曲目,评分等等,也支持全局热键,媒体库支持音频和视频. 新版本提供了对网络视频和 ...
- ExoPlayer播放器剖析(六)ExoPlayer同步机制分析
关联博客 ExoPlayer播放器剖析(一)进入ExoPlayer的世界 ExoPlayer播放器剖析(二)编写exoplayer的demo ExoPlayer播放器剖析(三)流程分析-从build到 ...
- ExoPlayer播放器剖析(五)ExoPlayer对AudioTrack的操作
关联博客 ExoPlayer播放器剖析(一)进入ExoPlayer的世界 ExoPlayer播放器剖析(二)编写exoplayer的demo ExoPlayer播放器剖析(三)流程分析-从build到 ...
- 搜狐影音播放器内核设计
播放器内核设计 1 背景 2 主要功能 3 模块层次结构 4 线程模型/数据流 5 在线播放关键用例 5.1 Play mp4 5.1.1 单个分段 5.1.1.1 解封装 5.1.1.2 解码 5. ...
- qq浏览器开源播放器_使用极简的开源Web浏览器Min浏览网络
qq浏览器开源播放器 世界是否需要其他Web浏览器? 尽管拥有多种浏览器供选择的日子已经一去不复返了,但是仍然有很多人在开发可以帮助我们使用Web的新应用程序. Min是这些新型浏览器之一. 顾名思义 ...
- Mark几款优秀的基于MPC开源播放器的源码供参考.
SEP 11TH, 2016 2:00 PM MPC(Media Player Classic)是一款基于DirectShow由一名匈牙利大佬Gabest开发的一款开源播放器. 由于该项目基于GPL源 ...
- 迷你播放器--第一阶段(3)--MediaPlayer的封装
迷你播放器--第一阶段(3) MediaPlayer的封装--利用intent实现消息传递 本文章为CSDN作者原创,转载请保留出处:http://blog.csdn.net/lrs0304/arti ...
- 开源播放器ijkplayer的使用
编译 快速入门: ijkplayer是Bilibili发布的轻量级 Android/iOS 开源视频播放器.核心代码主要是用C写的,主要由ffmpeg(解码)+openssl(https)+播放器相关 ...
最新文章
- 分布式架构spring mvc +mybatis +shiro+ Activiti +Alibaba Druid
- FreeBSD下安装配置Hadoop集群(一)
- 通过Nagios监控weblogic服务
- 使用php操作qq第三方登录
- fastdfs windows部署_从零搭建分布式文件系统MinIO比FastDFS要更合适
- 第八章节 文件操作一 (文件对话框)
- 几款实用Chrome插件
- orbslam2+azure kinect DK稠密重建
- 几个小图像处理工具网址
- android开发点击版本号多次无法进入开发者模式模式
- 路由器的虚拟服务器干嘛用的,dmz和虚拟服务器(tp路由器虚拟服务器能干嘛)...
- js实现对数组每一项加1的三种方法
- cf/codeforces #365 E - Mishka and Divisors 数学+背包dp+gcd
- 基于改进胶囊网络的文本分类-论文研读
- File.createTempFile创建临时文件
- 计算机比赛证书p图,雅礼中学计算机协会第二届“P图”大赛报名正式启动
- dapper mysql_.NET Core Dapper操作mysql数据库
- 人脸识别考勤系统有哪些功能?嘉上物联全都有
- 小米android在哪里,教大家安卓手机小米miui10远程协助在哪里进入
- vue table获取复选框选中数据