explaingit

carguo/gsyvideoplayer

21,432JavaAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

Android video player library with pluggable playback engines, streaming support, danmaku comments, filters, and picture-in-picture, drop it into your app to handle video playback.

Mindmap

mindmap
  root((GSYVideoPlayer))
    What it does
      Video playback library
      Pluggable engines
      Streaming formats
    Features
      Danmaku comments
      Visual filters
      Picture-in-picture
      Ad slots
    Playback engines
      IJKPlayer
      Media3/ExoPlayer
      MediaPlayer
      AliPlayer
    Formats supported
      HLS streaming
      RTSP/RTMP
      DASH
      HTTPS
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a video streaming app with HLS or RTMP support without writing media decoding code from scratch.

USE CASE 2

Add danmaku (scrolling comments) and visual filters to video playback in an existing Android app.

USE CASE 3

Implement picture-in-picture and floating window video playback alongside pre-roll ads.

USE CASE 4

Create a media player that automatically rotates video based on device orientation and responds to volume/brightness gestures.

Tech stack

JavaAndroidIJKPlayerMedia3ExoPlayer

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Android Studio and SDK setup, integrating into an existing Android project involves gradle dependency configuration and potential native library compilation for IJKPlayer.

Use freely for any purpose including commercial. Keep the notice and disclose changes to the patent grant.

In plain English

GSYVideoPlayer is a multi-purpose video player library for Android apps. Instead of forcing developers to pick one playback engine, it wraps several of them, IJKPlayer, Media3 (the successor to ExoPlayer2), the platform's MediaPlayer, and AliPlayer, behind one unified player you can drop into your screens, and you can switch between these engines or even plug in a custom one. The library is built around a long list of practical features for real video apps. It can play while caching so users do not re-download, supports many streaming protocols including HTTPS, RTSP, HLS, RTMP, DASH, and encrypted streams, and can apply more than twenty simple visual filters such as mosaic, black and white, blur, and Gaussian, plus watermarks and multi-screen playback. It can grab the first frame, take screenshots that include the player UI, and export short clips as GIFs. Playback features include continuous list playback, automatic playback while scrolling, seamless switching from a list to a detail page, gravity-based or manual rotation, fast and slow speed, mirrored display, and small-window playback even over the desktop. It also handles pre-roll, mid-roll, and skippable ads, external SRT and WebVTT subtitles, danmaku-style bullet chat, adaptive quality switching for HLS and DASH, FFmpeg-based decoding with G.711 audio, and 16K page-size compatibility. You would use this when building an Android app that needs a flexible video player without writing engine glue yourself. It is distributed through MavenCentral, GitHub Packages, and JitPack, and the primary language is Java.

Copy-paste prompts

Prompt 1
How do I integrate GSYVideoPlayer into my Android project and switch between IJKPlayer and Media3 playback engines?
Prompt 2
Show me how to add danmaku comments and SRT subtitles to video playback using GSYVideoPlayer.
Prompt 3
How do I implement picture-in-picture mode and floating window playback with GSYVideoPlayer?
Prompt 4
What's the best way to add pre-roll and mid-roll ads to videos using GSYVideoPlayer?
Prompt 5
How do I apply visual filters like blur and black-and-white effects to video playback in GSYVideoPlayer?
Open on GitHub → Explain another repo

← carguo on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.