
Gsy Kernel Switch
在 IJK / System / ExoPlayer2(Media3) / Aliyun 四个媒体内核之间自由切换,以及自定义 Manager 的方法。
Install
npx skills add CarGuo/GSYVideoPlayer --skill gsy-kernel-switch -g -a claude-code -y- Repository
- CarGuo/GSYVideoPlayer21.5k
- Category
- Engineering
- Updated
- 26d ago
- License
- Apache-2.0
- Context cost
- Lightabout 1,170 tokens
- Runs scripts
- No, instructions only
What it does
在 IJK / System / ExoPlayer2(Media3) / Aliyun 四个媒体内核之间自由切换,以及自定义 Manager 的方法。
gsy-kernel-switch
内核矩阵
| Kernel | Class | 来源模块 | 特点 |
|---|---|---|---|
| IJK(默认) | IjkPlayerManager | gsyVideoPlayer-java + 升级后的独立 ABI / ex_so | FFmpeg n5.1.10 的固定配置;软/硬解能力按格式与设备确认 |
| System | SystemPlayerManager | gsyVideoPlayer-java | 无 so;靠 android.media.MediaPlayer;直播/复杂容器兼容差 |
| Exo/Media3 | GSYExoPlayerManager(Demo 内)/GSYExo2MediaPlayer | gsyVideoPlayer-exo_player2 | DASH / HLS / SmoothStreaming / TrackSelection |
| Aliyun | AliPlayerManager | gsyVideoPlayer-aliplay | 阿里云 vid/authInfo;HLS 加密 |
切换 API
全局切换:PlayerFactory.setPlayManager(Class<? extends IPlayerManager>)(内部 getPlayManager 用 sPlayerManager.newInstance() 反射构造,故被切入的类必须有 public 无参构造)。见 PlayerFactory#L15-L27 与本仓库 R8 保留规则 proguard-rules.pro。
// Exo
PlayerFactory.setPlayManager(Exo2PlayerManager.class);
CacheFactory.setCacheManager(ExoPlayerCacheManager.class);
// System
PlayerFactory.setPlayManager(SystemPlayerManager.class);
// Aliyun
PlayerFactory.setPlayManager(AliPlayerManager.class);
必须在 player.setUp(...) 之前调用;否则本次实例仍用旧内核。
IPlayerManager 抽象
统一接口见 IPlayerManager。核心方法(子类必须实现):
