About this project

GSYVideoPlayer is an open-source Android video player framework that supports multiple playback kernels including IJKPlayer, Media3 (ExoPlayer2), MediaPlayer, and AliPlayer, which can be switched at runtime. It provides a wide range of video playback capabilities including list playback, continuous playback, gravity/manual rotation, variable speed playback, and seamless switching between list and detail pages. Key features include: - **Caching**: Play-while-caching using AndroidVideoCache or SimpleCache for ExoPlayer - **Protocol support**: H.263/264/265, HTTPS, RTSP, HLS, RTMP, DASH, MPEG, concat, crypto, and more - **Filters**: Over 20 video filters (mosaic, black and white, Gaussian blur, etc.), animations, watermarks, and multi-screen playback - **Frame capture**: Video first frame extraction, frame screenshots, composed UI screenshots, and video-to-GIF conversion - **Screen controls**: Adjustable display ratios (default, 16:9, 4:3, fill, custom), rotation angles (0/90/180/270), and mirror rotation - **Layout**: Full-screen and non-full-screen layout switching, pure playback mode without controls, danmaku (bullet chat) support, and inheritable custom layouts - **Window modes**: Small window playback and multi-window support including desktop windows - **Ads**: Pre-roll ads, skip-ad support, and interstitial ad functionality - **Subtitles**: Unified external subtitle overlay supporting SRT/WebVTT across all kernels, with Media3 embedded cue bridging - **Casting**: Optional DLNA/UPnP module built on jUPnP with a protocol-neutral SPI design - **Customization**: Pluggable rendering, management, playback control, and cache layers The project also offers a Jetpack Compose module with wrapper and native modes, providing Compose-friendly APIs including a GSYVideoPlayerView Composable and a GSYPlayerSnapshot state stream with event flow. The Compose sample includes 24 runnable activities covering various use cases. Dependencies are available via Maven Central (recommended), GitHub Packages, and JitPack. The project supports 16K page size and uses FFmpeg 4.3 with OpenSSL 1.1.1w for extended format support. A HarmonyOS version is also available separately.