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,切换播放器,设置静音等。【接口文档】
Debugerlog输出类
GSYVideoOptionBuilder配置工具类【源码】
GSYBaseActivityDetaildetail模式的抽象Activity 【源码】

4、Demo相关

说明
PlayActivity直接打开一个播放器作为全屏,不需要单独调用全屏功能。
ListVideoActivity普通列表DEMO,滑出屏幕会被释放。
ListVideo2ActivityListVideoUtil的DEMO,滑出列表不会被释放。
RecyclerViewActivity普通列表DEMO的RecyclerView。
RecyclerView2ActivityListVideoUtil的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【源码】

其他

持续完善中。。。。。