Skip to content
Shuyu Guo edited this page Jan 22, 2024 · 95 revisions

Welcome to GSYVideoPlayer(请多参考Demo)

基于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.1、简单说明

1、播放器内置常用功能接口,具体可参阅下发链接和源码,如需要自定义可通过继承播放器后,返回自定义布局或重载接口实现。

2、需要注意的是,全屏与非全屏播放之间接的是通过切换显示实现的,所以如有自定义功能或参数,需要重载startWindowFullscreenresolveNormalVideoShow接口,在其中做同步处理。避免自定义效果在切换不生效,具体可参看DEMO。

3、外部需要获取播放器时,如有全屏和非全屏切换,可使用接口detailPlayer.getCurPlay()获取。

1.2、基础API文档

2、Video相关

有了一些调整,后面将修改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 广告支持【源码】

3、Utils相关

说明
GSYVideoType 默认配置开关(显示比例,是否硬解码,切换播放器等)。【源码】
ListVideoUtil 单例列表播放器封装,封装了StandardGSYVideoPlayer ,对应 DEMO ListVideo2Activity,目前不再维护。
OrientationUtils 旋转工具类。【接口文档】
GSYVideoManager 视频管理器,实际上的单例播放器,全局暂停/播放接口,清理缓存,配种option,切换播放器,设置静音等。【接口文档】
Debuger log输出类
GSYVideoOptionBuilder 配置工具类【源码】
GSYBaseActivityDetail detail模式的抽象Activity 【源码】

4、Demo相关

说明
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【源码】

其他

持续完善中。。。。。