// the find
jiajunhui/PlayerBase
The basic library of Android player will process complex business components. The access is simple。Android播放器基础库,专注于播放视图组件的高复用性和组件间的低耦合,轻松处理复杂业务。
A Java Android library that wraps the system MediaPlayer, ExoPlayer, and ijkplayer behind one IPlayer interface, with overlay UI (controls, gestures, loading, errors) split into independent cover components. It is aimed at developers building video list, fullscreen, and floating-window playback who want to reuse one player view across screens. The README and install instructions are in Chinese, and the last push was in February 2022.
- Each decoder backend is its own Gradle module (playerbase core, exoplayer, ijkplayer), so an app pulls in only the engines it needs and the core stays independent of any one codec stack.
- Overlay UI is built as cover components that communicate through an event dispatcher and receiver group instead of holding references to each other. That is what makes the same controls reusable across list play and fullscreen.
- The render layer hides SurfaceView and TextureView behind IRender, with aspect-ratio logic in RenderMeasure, so switching surface type doesn't touch player code.
- PlayRecordManager persists resume positions with a capped record count and a pluggable key provider. Most players end up hand-rolling this feature, and it is included here.
- The last push was February 2022, and the README's badges and install coordinates point at Bintray, which shut down in 2021. Confirm the artifacts resolve before adopting, and expect to fork if you need fixes for newer Android versions.
- The ijkplayer path inherits upstream limits. The README itself says the official ijk build supports few format versions and no HTTPS, so HTTPS streams need a custom build.
- The receiver, producer, and assist layers add several indirections. For a single-player app that mostly needs play, pause, seek, and fullscreen, the abstraction costs more to read and debug than it returns.