多年前写的一个Android视频播放器组件,首创插件式开发视频播放器, 方便大家专注于UI及业务逻辑, 屏蔽底层技术, 标准的API接口、回调等。 在多个项目上稳定运行(最大的一个APP, 活跃用户90W),现在开源:
功能特点:
- 支持多引擎(VLC, Android MediaPlayer)以及扩展容易,视频格式根据所选引擎决定
- 插件式开发视频组件,大小屏无缝切换, 通过插件式开发, 可以完全自定义自己的UI,功能。
- 全屏、小窗口播放无缝切换
- 支持音量、亮度、画面比例、字幕、播放速率等基础功能
- 支持基础功能:暂停、继续、缓存处理等
- RTMP视频直播流
本项目在多个项目中适用,经得起考验,耐得住肏,欢迎来撸。 想快速开发应用的同学们,供大家研究研究。
当时在做教育类APP, 公司很多项目在用到视频播放的功能,每个项目的功能需求不一致、需求长相也不一致,在人手有限的情况下, 为了让每个项目围护简单 接入简单并尽可能的BUG少,上线快, 于是就有了 插件式开发视频播放器组件。
> 它定义了一套标准的API\回调接口(说的比较抽象, 了解视频的播放回调逻辑, 可以很容易理解它)
> 它定义了一套插件语法(XML语法, 与android平常的xml语法类似)
> 各个项目组 负责维护自己的插件 及 插件配置文件即可。
于是在多个项目中, 视频核心库只要一个人负责维护, 项目中的各个业务逻辑、界面UI等 由各自项目人员各自维护(维护插件以及插件配置文件即可)
项目结构:
video-heros ===> 是接入工程demo
video ===> 是核心库(插件式开发)
video-engine ===> 是视频引擎(支持视频底层引擎切换)
sdk-vlc ===> 是vlc的JNI封装库
video-plugin-core ===> 插件式开发核心库, 定义插件语法(assets/plugin.xsd)、插件管理、插件加载等
====================================================================
有问题可以留言,QQ:56027652。
引擎实现
- 使用android系统原生的MediaPlayer作为播放器的引擎
- 支持播放、暂停、跳转、手势等组件基本动作
- 增加视频引擎管理器,由项目引入库决定使用哪种引擎。
- 插件框架增加背景阴影属性
字幕及外围功能
- 增加srt字幕功能插件
- 增加后台下载字幕功能
- 增加网络状态变化监听插件
- 增加低网速插件功能
- 增加字幕切换、缩放比率切换、播放速度切换功能
二分屏功能
- 开发视频内文档插件,支持接入阅读器组件、文档翻页插件、文档同步功能
- 支持单屏、多屏切换
- 接入阅读器组件
- 增加延时加载文档功能
习题插件功能
- 分离原非学历项目中的习题插件部分,整合成新的习题插件组件
- 标准化习题插件的入口:加载并打开习题
- 增加习题插件的通信接口
- 增加延时加载习题功能
该版本开发视频播放器的主要功能
- 使用新的插件框架重构视频播放器
- 调整视频组件的结构:分离引擎并标准化
- 支持mp3、flv、f4v的基础视频格式播放
- 支持手势操作调节音量、亮度
- 自动跳转到上次播放位置功能
- 调整vlc-jni部分代码,更符合hy项目结构
- 重新归类视频的消息事件(分为:准备状态、播放、暂停、完成四类)