Android项目探索系列之《GSYVideoPlayer开源项目》

GSYVideoPlayer是一款基于ijkplayer的开源视频播放器项目,支持多种播放内核如IjkMediaPlayer、ExoPlayer2和MediaPlayer,并提供丰富的自定义选项,包括播放模式、内核切换、缓存管理及屏幕比例调整等。

GSYVideoPlayer开源项目

项目是基于ijkplayer编译的so,ijkplayer基于FFmpeg

GSYVideoPlayer

一、 依赖方法

7.0版本使用了anndroidx,support版本请看6.x.x

JCenter 引入方法(推荐)

//完整版引入
implementation 'com.shuyu:GSYVideoPlayer:7.1.1'

二、 项目说明

项目经过多版本调整之后,目前大致结构分为如下 :

  • Player 播放内核层:IjkMediaPlayer、ExoPlayr2、MediaPlayer(IPlayerManager)。
  • Cache 缓存层:ProxyCacheManager、ExoPlayerCacheManager(ICacheManager)。
  • Manager 内核管理层:GSYVideoManager(GSYVideoBaseManager <- GSYVideoViewBridge)。
  • Video 播放器控件层:GSYTextureRenderVIew 到 GSYVideoPlayer 五层。
  • Render 渲染控件层:TextureView、SurfaceView、GLSurfaceView(GSYRenderView <- IGSYRenderView)。

目前整个video层即是传统controller层,也是大部分时候自定义实现需要继承的层

结构如下图:

框架图

从这里看出,项目的播放内核、管理器、渲染层都是可以自定义替换的。

三、 使用模式

1.直接播放

SimplePlayer

2.详情页播放

(1)模式一(全屏是竖直的)

SimpleDetailActivityMode1

(2)模式二(全屏是横向的)

SimpleDetailActivityMode2

3.列表中使用

(1)模式一(全屏是竖直的)

SimpleListVideoActivityMode1

(2)模式二(全屏是横向的)

SimpleListVideoActivityMode2

四、更多使用

1.切换内核

//PlayerFactory.setPlayManager(new Exo2PlayerManager());//EXO模式
//PlayerFactory.setPlayManager(new SystemPlayerManager());//系统模式
//PlayerFactory.setPlayManager(new IjkPlayerManager());//ijk模式

2.调整代码结构,CacheFactory 更方便自定义,默认 ProxyCacheManager。

//CacheFactory.setCacheManager(new ExoPlayerCacheManager());//exo缓存模式,支持m3u8,只支持exo
//CacheFactory.setCacheManager(new ProxyCacheManager());//代理缓存模式,支持所有模式,不支持m3u8等

3.增加 ExoMediaSourceInterceptListener,方便 Exo 模式下使用自定义的 MediaSource。

ExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() {
           /**
            * @param dataSource  链接
            * @param preview     是否带上header,默认有header自动设置为true
            * @param cacheEnable 是否需要缓存
            * @param isLooping   是否循环
            * @param cacheDir    自定义缓存目录
            * @return 返回不为空时,使用返回的自定义mediaSource
            */
            @Override
            public MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) {
                return null;
            }
});

4.切换比例

 
//默认显示比例
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_DEFAULT);
    
//16:9 
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_16_9);

//全屏裁减显示,为了显示正常 CoverImageView 建议使用FrameLayout作为父布局
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_FULL);

//全屏拉伸显示,使用这个属性时,surface_container建议使用FrameLayout
GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL); 

 //4:3
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_4_3); 

5.切换渲染

//默认TextureView
GSYVideoType.setRenderType(GSYVideoType.TEXTURE);

//SurfaceView,动画切换等时候效果比较差
GSYVideoType.setRenderType(GSYVideoType.SUFRACE);

//GLSurfaceView、支持滤镜
GSYVideoType.setRenderType(GSYVideoType.GLSURFACE);
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄毛火烧雪下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值