首页/新闻资讯/正文详情

GSYVideoPlayer:Android多引擎视频播放实操

发布时间:2026/11/7 14:13:11 来源:云帆数科 栏目:资讯中心
GSYVideoPlayer:Android多引擎视频播放实操
GSYVideoPlayerAndroid多引擎视频播放实操【免费下载链接】GSYVideoPlayerVideo players (IJKplayer, ExoPlayer, MediaPlayer), HTTPS, 16k page size, danmaku (bullet chat) support, external subtitles, support for filters, watermarks, and GIF screenshots, pre-roll and mid-roll ads, multiple simultaneous playback, basic seeking/dragging, volume and brightness adjustment, play-while-cache support项目地址: https://gitcode.com/GitHub_Trending/gs/GSYVideoPlayer当你的视频业务同时需要 mp4、HLS、RTSP 三种协议又要按机型在 IJKPlayer、ExoPlayer、MediaPlayer 三种内核之间取舍时给每个内核单独封装一套 UI 和生命周期管理显然是重复劳动。GSYVideoPlayer 就是为这个场景生的多引擎视频播放器框架一个播放控件底下可挂 IJKPlayer基于 FFmpeg n5.1.10、Media3ExoPlayer2、Android 原生 MediaPlayer 乃至阿里播放器缓存、弹幕、外挂字幕、滤镜这些能力在内核切换时不丢失。项目全景它做了什么、怎么做到的GSYVideoPlayer 不发明新的解码器它做的是把异构内核收敛到一个统一接口后面。内核层被抽象成IPlayerManager接口IJK / Exo2 / System 各一个实现上层GSYVideoBaseManager单例负责播放器实例的创建、释放和状态机UI 层由GSYVideoView→GSYBaseVideoPlayer→GSYVideoPlayer逐层封装渲染层独立支持 TextureView、SurfaceView、GLSurfaceView 三种后端。这样内核只关心解码和时间线缓存、字幕、投屏等跨内核能力全部落在 Manager 层或 UI overlay 上。选它而不是直接包 ExoPlayer 或 IJK主要基于三个设计判断内核、so、UI 拆成独立 Maven 构件。v14 把 IJK 原生库拆成ex_so三个 ABI 打包和 arm64/armv7a/x64 独立模块Java 控制层单独发版。控制层修 bug 不必让用户重新拉几百 MB 的 so按需选 ABI 也能压住包体积。缓存层双实现而非单一方案。默认的 Proxy 代理缓存基于 AndroidVideoCache对所有内核透明但 m3u8 这种分段流它无能为力所以另配了走 Media3 SimpleCache 的ExoPlayerCacheManager。两个都提供是因为单一缓存方案必然放弃一部分源类型。渲染层可插拔。SurfaceView 独占 window 层级适合沉浸式全屏但混排列表里会被 WebView 遮挡TextureView/GLSurfaceView 能叠在普通 View 树里代价是轻微 GPU 开销。把选择权交给业务是它能在详情页和列表页用同一套控件的前提。从零跑通最小可用路径引入依赖v11 起项目从 Jitpack 迁到了 Maven CentralJitpack 历史包有随机丢失问题聚合构件gsyvideoplayer已包含 Java 控制层、Exo2 和ex_so原生库一条依赖即可用dependencies { // 聚合包含 java 控制层 exo2 ex_so 三个 ABI 的 IJK 原生库 implementation io.github.carguo:gsyvideoplayer:14.0.0 }如果只想要部分内核和 ABI用gsyvideoplayer-java加单个 ABI 模块如gsyvideoplayer-arm64拼装即可构件关系见下图注意不要同时引入ex_so和独立 ABI 模块。第一次播放布局里放一个标准播放控件StandardGSYVideoPlayer内置标题栏、进度条、全屏按钮等完整控制 UIcom.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer android:idid/video_player android:layout_widthmatch_parent android:layout_height200dp /代码里setUp传入 URL、是否开启边播边缓存和标题随后startPlayLogic启动StandardGSYVideoPlayer player findViewById(R.id.video_player); player.setUp(https://example.com/video.mp4, true, 演示视频); player.startPlayLogic();另外两件事必做Activity 的onPause/onResume里成对调用GSYVideoManager.onPause()/onResume()若需要旋转全屏在 Manifest 给该 Activity 声明android:configChangeskeyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode否则屏幕方向变化会重建 Activity 导致播放中断。更多最小示例可看 快速上手文档。能力拆解按真实使用场景组织GSYVideoPlayer RecyclerView 列表滚动自动播放视频信息流是 GSYVideoPlayer 使用最重的场景item 入屏自动播、滑出视口释放。用setPlayTag打标签、setPlayPosition绑定位置滚动监听里判断播放位是否离开可视区间holder.gsyVideoPlayer.setPlayTag(TAG); holder.gsyVideoPlayer.setPlayPosition(position); // onScrolled 中播放位滑出可视区间 if (position firstVisibleItem || position lastVisibleItem) { GSYVideoManager.releaseAllVideos(); adapter.notifyDataSetChanged(); }容易踩的坑只写了onPause释放却漏写onResume恢复返回页面后播放器处于已释放态不再出画面两个生命周期回调必须成对出现。横竖屏无缝全屏与返回键处理全屏有两条路orientationUtils.resolveByClick()走真正的 Activity 旋转或startWindowFullscreen(context, false, true)只旋转视图不重建窗口后者配合setNeedOrientationUtils(false)可以不碰 Activity 方向。列表页混排场景推荐后者。坑在返回键全屏状态下物理返回会直接退出页面必须在onBackPressed里先执行if (GSYVideoManager.backFromWindowFull(this)) return;把返回事件优先消耗给全屏状态。弱网下边播边缓存配置普通 mp4 走默认代理缓存即可setUp第二参数传true或 builder 里setCacheWithPlay(true)都会把已下载片段落盘断网续播从本地代理地址取流。HLS 分段流是例外——代理缓存无法缓存 m3u8必须切到 Exo 内核的 SimpleCache// m3u8 需 Exo 缓存先于 Exo cache 创建时调用 ExoSourceManager.setCacheMaxSize(1024L * 1024L * 1024L); CacheFactory.setCacheManager(ExoPlayerCacheManager.class);坑m3u8 源配了默认 Proxy 缓存会出现缓存目录没增长、进度条一直 loading的假死现象本质是代理缓存对分段流无效检查内核和缓存 Manager 是否匹配即可。按源类型切换播放内核同一 App 里不同详情页可能走不同内核PlayerFactory.setPlayManager(Exo2PlayerManager.class); // HLS/DASH PlayerFactory.setPlayManager(IjkPlayerManager.class); // RTSP/RTMPIJK 内核的 FFmpeg 解码对 RTSP、非主流封装兼容性最好Exo2 的自适应码率HLS master / DASH MPD交给 Media3 TrackSelector 更省事。切换是全局的多内核并存的页面要按实例传入而非全局切换架构说明里有各能力的分层归属。生产环境避坑清单全屏切换瞬间 SurfaceView 黑帧或被 WebView 遮挡→ 将渲染层换成GSYVideoType.setRenderType(GSYVideoType.TEXTURE)TextureView 在 View 树内合成混排场景稳定。横竖屏切换时 Activity 重建、播放进度丢失→ Manifest 补全configChanges方向变化不再触发重建。构建报 duplicate native library→ 同一 ABI 的原生库只留一份ex_so与gsyvideoplayer-arm64等独立 ABI 模块二选一。RTSP 直播连接超时久到离谱→ IJK 的 RTSP timeout 参数单位是微秒而非毫秒按毫秒传值会等满百万倍时长协议与编解码说明有各协议参数清单。切到后台音频仍继续播放→GSYVideoManager.onPause()没挂到 Activity 生命周期检查是否被自定义基类吞掉了super.onPause()。GSYVideoPlayer 的适用边界比较清晰多源混排mp4/HLS/RTSP 并存、需要多窗口小窗或投屏、希望内核可换但业务层不动的视频 App是它的甜区如果你的业务只播 HLS/DASH 自适应流、对包体积敏感且团队已熟悉 Media3直接用 androidx.media 反而更轻涉及剪辑、转码则超出它的范围。多内核热切换、边播边缓存、跨内核统一字幕与渲染层【免费下载链接】GSYVideoPlayerVideo players (IJKplayer, ExoPlayer, MediaPlayer), HTTPS, 16k page size, danmaku (bullet chat) support, external subtitles, support for filters, watermarks, and GIF screenshots, pre-roll and mid-roll ads, multiple simultaneous playback, basic seeking/dragging, volume and brightness adjustment, play-while-cache support项目地址: https://gitcode.com/GitHub_Trending/gs/GSYVideoPlayer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

EasyWeChat 6.x 全解读:一条微信消息的完整旅程,穿过哪 5 个关键设计
EasyWeChat 6.x 全解读:一条微信消息的完整旅程,穿过哪 5 个关键设计

EasyWeChat 6.x 全解读:一条微信消息的完整旅程,穿过哪 5 个关键设计 【免费下载链接】easywechat 📦 一个 PHP 微信 SDK 项目地址: https://gitcode.com/gh_mirrors/ea/easywechat EasyWeChat 是 PHP 生态里最流行的 PHP 微信开发 SD… · 2026/11/7 4:00:28

听说前端都是切图仔,所以学了PS
听说前端都是切图仔,所以学了PS

PS 从零开始-基础篇 什么话都不想说了,前端以死后端已死,毁灭即是新生,我要开始追梦了, 从小就希望,制作一款自己的游戏🎮去学了编程,了解了:Java、C#、前端... 不小心入了web领域, 现在大环境不好,正式失业,开始思考新的方向,我该干嘛呢,要不要趁此机会休息休… · 2026/11/6 3:09:15

uniapp引入uview
uniapp引入uview

文章目录一、安装方式二、Hbuilder X方式2.1 安装2.2 引入配置一、安装方式 两种安装方式: Hbuilder X方式NPM方式 二、Hbuilder X方式 如果您是使用使用Hbuilder X开发的用户,您可以在uni-app插件市场通过uni_modules的形式进行安装,此安装方… · 2026/11/6 3:09:15

刘家辉的电工证查询:外省证能否转入河南?2026河南最新政策解读
刘家辉的电工证查询:外省证能否转入河南?2026河南最新政策解读

刘家辉的电工证查询:外省证能否转入河南?2026河南最新政策解读 之前考的证在外省能不能转过来?这几乎是每个跨省打工的电工都关心的问题。尤其是像刘家辉这样的信阳浉河区房建工程从业者,手中拿着外地电工证,却想在河南继续干下去,心里总有些不安。… · 2026/11/8 11:00:30

嘉定方泰低压电工证怎么考?上岗必备全流程避坑指南
嘉定方泰低压电工证怎么考?上岗必备全流程避坑指南

嘉定方泰低压电工证怎么考?上岗必备全流程避坑指南 不知道去哪报名怕被中介坑?嘉定方泰低压电工证是很多电工朋友想考的证书,但报名渠道五花八门,真假难辨,稍微不注意就可能花冤枉钱、走弯路。作为从业多年的特种作业操作证办理老手,我深知这背后的水有… · 2026/11/8 11:00:30

小白电工证考试千万别踩坑,工地太忙根本没时间复习考试怎么办
小白电工证考试千万别踩坑,工地太忙根本没时间复习考试怎么办

小白电工证考试千万别踩坑,工地太忙根本没时间复习考试怎么办 工地太忙根本没时间复习考试,这事儿真不是吹,很多电工朋友都遇到过。尤其是刚入行的小白电工证考试,不仅流程复杂,备考时间也被压缩得严严实实,一不小心就踩坑了。今天我以焦作某项目现场管… · 2026/11/8 11:00:30

二级资质特种工怎么配 怎么报名别踩坑
二级资质特种工怎么配 怎么报名别踩坑

二级资质特种工怎么配 怎么报名别踩坑 怕考不过白交培训费,你不是一个人。在南阳地区,很多想从事特种作业的学员都遇到过这个问题,特别是面对“二级资质特种工怎么配”这个关键词时,不知道从何下手。很多人误以为只要交钱就能拿到证,结果最后发现报名流… · 2026/11/8 11:00:30

网上所谓无忧考电工证怎么考?官方报名入口在这里
网上所谓无忧考电工证怎么考?官方报名入口在这里

网上所谓无忧考电工证怎么考?官方报名入口在这里 怕考不过白交培训费,现在网上打着“无忧考电工证”旗号的机构越来越多,很多人被宣传话术忽悠,结果花钱又没证,白忙一场。其实,只要掌握正确流程,避开那些“坑”,电工证也不是那么难考的。关键是要通过… · 2026/11/8 11:00:30

北京电工证指导规划真实经历告诉你怎么复审延期
北京电工证指导规划真实经历告诉你怎么复审延期

北京电工证指导规划真实经历告诉你怎么复审延期 证书过期了不知道怎么复审延期?这不是个例,我之前就遇到好几个焦作市政公用工程的电工朋友,因为不懂复审流程,差点丢了工作。今天我就从【北京电工证指导规划】的角度,结合真实经历,讲讲怎么规划、怎么避… · 2026/11/8 10:59:30

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/8 0:00:20

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/8 0:00:20

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/8 0:00:20

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/8 1:18:25

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码