-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Home
Shuyu Guo edited this page Jan 22, 2024
·
95 revisions
基于IJKPlayer(兼容系统MediaPlayer与EXOPlayer2),实现了多功能的视频播放器。 (请仔细阅读下方各项说明,大多数问题可在下方找到解答)。
类型 | 功能 |
---|---|
缓存 | 边播边缓存,使用了AndroidVideoCache;ExoPlayer使用SimpleCache。 |
协议 | h263\4\5、Https、concat、rtsp、hls、rtmp、crypto、mpeg等等。 |
滤镜 | 简单滤镜(马赛克、黑白、色彩过滤、高斯、模糊、模糊等等20多种)、动画、(水印、画面多重播放等)。 |
帧图 | 视频第一帧、视频帧截图功能,视频生成gif功能。 |
播放 | 列表播放、列表连续播放、重力旋转与手动旋转、视频本身rotation旋转属性、快播和慢播、网络视频加载速度。 |
画面 | 调整显示比例:默认、16:9、4:3、填充;播放时旋转画面角度(0,90,180,270);镜像旋转。 |
内核 | IJKPlayer、EXOPlayer、MediaPlayer切换、自定义内核 |
布局 | 全屏与非全屏两套布局切换、没有任何操作控件的纯播放支持、弹幕功能、继承自定义任何布局。 |
播放 | 单例播放、多个同时播放、视频列表滑动自动播放、列表切换详情页面无缝播放。 |
窗口 | 小窗口、多窗体下(包括桌面)的小窗口播放。 |
广告 | 片头广告、跳过广告支持、中间插入广告功能。 |
更多 | 暂停前后台切换不黑屏;调整不同清晰度的支持;无缝切换支持;锁定/解锁全屏点击功能;进度条小窗口预览(测试)。 |
自定义 | 可自定义渲染层、自定义管理层、自定义播放层(控制层)、自定义缓存层。 |
关于自定义和出现问题的请先看问题集锦、demo、issue。
多了解一些音视频的基础常识,对容器,音视频编码,ffmpeg先做一些了解,以及mediacodec等的不同。
尽量少出现为什么别的能播的问题哟。
播放器的可自定义还是挺高的,定制请参考demo,多看源码。现在的功能有些多,demo也在不断的更新。
一些新功能和项目结构也在不断的调整。
欢迎提出问题,谢谢。
1、播放器内置常用功能接口,具体可参阅下发链接和源码,如需要自定义可通过继承播放器后,返回自定义布局或重载接口实现。
2、需要注意的是,全屏与非全屏播放之间接的是通过切换显示实现的,所以如有自定义功能或参数,需要重载startWindowFullscreen
和resolveNormalVideoShow
接口,在其中做同步处理。避免自定义效果在切换不生效,具体可参看DEMO。
3、外部需要获取播放器时,如有全屏和非全屏切换,可使用接口detailPlayer.getCurPlay()
获取。
-
更多版本API请查阅:版本更新说明
有了一些调整,后面将修改wiki说明。
类 | 说明 |
---|---|
GSYTextureRenderView | 画面渲染绘制相关层。【源码】 |
GSYVideoView | 视频播放相关层。【源码】 |
GSYVideoControlView | 控制与UI显示相关。【源码】 |
GSYBaseVideoPlayer | 全屏和小屏幕相关处理层,最基础可基础对象类。【源码】 |
StandardGSYVideoPlayer | 可以直接使用的标准播放器,标准使用例子,适合参考实现或基础【源码】 |
VideoAllCallBack | 视频相关的回调接口【源码】 |
ListGSYVideoPlayer | 继承StandardGSYVideoPlayer,添加连续播放一个视频列表的功能。【源码】 |
PreViewGSYVideoPlayer | 继承StandardGSYVideoPlayer,小窗口进度预览,测试版本。【源码】 |
LandLayoutVideo | 继承CustomGSYVideoPlayer ,DEMO里演示全屏非全屏不同布局效果。【源码】 |
SampleVideo | 继承StandardGSYVideoPlayer,DEMO演示清晰度切换,镜像,旋转等效果。【源码】 |
DanmakuVideoPlayer | 继承StandardGSYVideoPlayer,DEMO演示弹幕集成效果。【源码】 |
NormalGSYVideoPlayer | 继承StandardGSYVideoPlayer,使用图片播放按键和loading的播放器。【源码】 |
EmptyControlVideo | 继承StandardGSYVideoPlayer,空播放UI的播放器。【源码】 |
SmartPickVideo | 无缝切换的播放器。【源码】 |
SampleCoverVideo | 内置封面的播放器。【源码】 |
FloatingVideo | 多窗体下的悬浮窗页面支持Video。【源码】 |
GSYSampleADVideoPlayer | 简单片头广告。【源码】 |
GSYADVideoPlayer | 广告支持【源码】 |
类 | 说明 |
---|---|
GSYVideoType | 默认配置开关(显示比例,是否硬解码,切换播放器等)。【源码】 |
ListVideoUtil | 单例列表播放器封装,封装了StandardGSYVideoPlayer ,对应 DEMO ListVideo2Activity,目前不再维护。 |
OrientationUtils | 旋转工具类。【接口文档】 |
GSYVideoManager | 视频管理器,实际上的单例播放器,全局暂停/播放接口,清理缓存,配种option,切换播放器,设置静音等。【接口文档】 |
Debuger | log输出类 |
GSYVideoOptionBuilder | 配置工具类【源码】 |
GSYBaseActivityDetail | detail模式的抽象Activity 【源码】 |
类 | 说明 |
---|---|
PlayActivity | 直接打开一个播放器作为全屏,不需要单独调用全屏功能。 |
ListVideoActivity | 普通列表DEMO,滑出屏幕会被释放。 |
ListVideo2Activity | ListVideoUtil的DEMO,滑出列表不会被释放。 |
RecyclerViewActivity | 普通列表DEMO的RecyclerView。 |
RecyclerView2Activity | ListVideoUtil的RecyclerView。 |
DetailPlayer | 详情类型的DEMO,手机旋转\点击全屏等效果。 |
DetailListPlayer | 详情类型的DEMO,播放一个列表,自动播放下一个,手机旋转\点击全屏等效果。 |
WebDetailActivity | 嵌套WebView的详情类型DEMO,主要是滑动演示。 |
WebDetailActivity | 嵌套WebView的详情类型DEMO,主要是滑动演示。 |
DanmkuVideoActivity | 嵌套DanmakuVideoPlayer的DEMO,主要是弹幕功能。 |
DetailMoreTypeActivity | 支持全屏与非全屏切换的清晰度,旋转,镜像等功能。 |
InputUrlDetailActivity | 增加了自定义输入框输入url页面。 |
PlayEmptyControlActivity | 没有任何ui的播放页面。 |
DetailControlActivity | 增加一些特俗控制的播放页面。 |
PlayEmptyControlActivity | 没有任何控制ui的播放器。 |
PlayPickActivity | 无缝切换播放页面。 |
DetailFilterActivity | 滤镜效果播放页面 |
WindowActivity | 多窗体下(包括桌面)的小窗口播放(WindowActivity) |
DetailADPlayer | 简单片头广告 |
ListMultiVideoActivity | 同时播放 |
DetailADPlayer2、ListADVideoActivity | 高级功能广告支持 |
SwitchPlay | 列表切换详情页面无缝播放【源码】 |
自定义 | 高级自定义demo【源码】 |
持续完善中。。。。。