iPlayer
Introduction: 支持 IJKPlayer、ExoPlayer、MediaPlayer 和其它更多解码器切换、支持静音、镜像、渲染模式、倍速设置等功能的轻便级播放器,支持自定义解码器、控制器、UI 交互组件和悬浮窗播放能力等
Tags:
一、SDK 基础功能
- 支持网络地址、直播流、本地 Assets 和 Raw 等音视频资源文件播放
- 支持播放倍速、缩放模式、静音、镜像等功能设置
- 支持自定义视频解码器、控制器、UI 交互组件、视频画面渲染器
- 支持对 SDK 默认控制器进行局部交互组件自定义
- 支持重力感应横竖屏旋转及开关设置
- 支持多播放器同时播放、任意位置直接启动全屏播放
- 支持任意位置启动 Window 悬浮和全局悬浮窗口播放、支持靠边吸附悬停
- Demo:MediaPlayer、IjkPlayer、ExoPlayer 三种解码器切换
- Demo:列表或组件之间无缝转场播放、全局悬浮窗口转场播放
- Demo:仿抖音,支持视频缓存、秒播
- Demo:简单的弹幕交互
- Demo:Android8.0+画中画示例
二、历史版本
三、SDK 集成
- 建议集成前先下载 apk体验,找到自己想要实现的功能模块,后续集成可参考 demo 源码。
1、项目根 build.gradle 配置
allprojects { repositories { maven { url 'https://jitpack.io' } } }
2、模块 build.gradle 配置
dependencies { //播放器(无 UI 交互) implementation 'com.github.hty527.iPlayer:iplayer:2.1.26.1' //SDK 默认 UI 交互组件 implementation 'com.github.hty527.iPlayer:widget:2.1.26.1' }
- 更多解码器、缓存等全量 SDK 请阅读全量 SDK
3、在需要播放视频的 xml 中添加如下代码,或在适合的位置 new VideoPlayer()
<com.android.iplayer.widget.VideoPlayer android:id="@+id/video_player" android:layout_width="match_parent" android:layout_height="200dp"/>
4、播放器准备及开始播放
mVideoPlayer = (VideoPlayer) findViewById(R.id.video_player); mVideoPlayer.getLayoutParams().height= getResources().getDisplayMetrics().widthPixels * 9 /16;//固定播放器高度,或高度设置为:match_parent //使用 SDK 自带控制器+各 UI 交互组件 VideoController controller = VideoPlayer.initController();//初始化 SDK 默认控制器 //将 UI 交互组件绑定到控制器(需集成:implementation 'com.github.hty527.iPlayer:widget:lastversion') WidgetFactory.bindDefaultControls(controller); controller.setTitle("测试地址播放");//视频标题(仅横屏状态可见) //设置播放源 mVideoPlayer.setDataSource("https://upload.dongfeng-nissan.com.cn/nissan/video/202204/4cfde6f0-bf80-11ec-95c3-214c38efbbc8.mp4"); //异步开始准备播放 mVideoPlayer.prepareAsync();
更多控制器及播放器设置请阅读常用控制器及播放器 API
5、生命周期处理
@Override protected void onResume() { super.onResume(); mVideoPlayer.onResume(); } @Override protected void onPause() { super.onPause(); mVideoPlayer.onPause(); } @Override public void onBackPressed() { if(mVideoPlayer.isBackPressed()){ super.onBackPressed(); } } @Override protected void onDestroy() { super.onDestroy(); mVideoPlayer.onDestroy(); }
6、常用 API、更换解码器、自定义解码器、UI 交互组件和悬浮窗口播放等功能请阅读wiki
四、遇到问题
- 1、阅读接入文档wiki
- 2、提交issues
- 3、联系作者:584312311@qq.com
- 4、项目无法下载或下载缓慢请至码云下载
- 5、播放器框架结构图
五、SDK 及 Demo 部分功能预览
六、鸣谢
- ijkplayer
- ExoPlayer
- AndroidVideoCache
- Demo 演示视频列表模块 api 使用的是开眼 api,本项目只做学习使用。禁止任何人应用于任何商业用途,由此带来的法律风险由应用于商业用途的一方承担!