You have seen this intro four times.
Just+ Player is an Android video player built on Media3. It looks up where the intro, the recap, the ad break and the credits are, and offers you one button. The rest of the time it stays out of the picture.
The intro is ninety seconds. The button is one tap.
Segments arrive from the app that launched the player, or are looked up online in six databases — SkipDB, SkipMe.db, IntroHater, IntroDB, TheIntroDB and Aniskip. They vote. A segment several of them agree on is the one used, and its timing is taken from the most reliable source rather than averaged into mush.
- Intro and credits, set apart
- Each end of the episode gets its own behaviour: a Skip button for three seconds, a Skip button for as long as the segment lasts, or skip it without asking.
- Nothing is final
- Every skip can be undone from the same pill, and an automatic skip can be cancelled in the moment before it fires.
- When a database is off
- A session offset slider nudges every segment a few seconds either way, for the release that is not quite the one the database timed.
- Drawn where you can see them
- Skip and ad segments are marked on the time bar itself, so you know what is coming before it arrives — the same bar this page is navigated with.
Controls that say what is going on
The header carries the poster, the title and a line of facts about what is actually playing, next to the clock and the time playback will end.
- Tap anywhere on the time bar to seek there — no dragging the handle across the screen.
- Hold the picture for 2× speed, let go to drop back to normal.
- Ten scaling modes — Fit, Crop, Fill, 16:9, 4:3, 16:10, 2:1, 2.35:1, 2.39:1, 5:4. A tap cycles the first five, a long press opens the picker.
- Volume to 200 % with a loudness boost, and volume and brightness gestures that report a percentage instead of an unlabelled bar. Either gesture can be switched off.
- A transfer rate under the loading ring, so a stalling stream is obvious rather than mysterious.
- An optional always-on clock, and a mode where the volume keys move only the player and leave the device alone.

Locked against pockets
One tap in the bottom bar locks the screen; a swipe unlocks it. The lock survives a trip to the background, so answering a message does not hand the film back to a stray thumb.
Panels, not pop-up menus
Audio, subtitles, quality, speed and the playlist each slide in beside the picture instead of covering it. A button stays hidden until the file actually has something to put behind it.

Playlist
A queue of episodes with poster thumbnails and a resume position kept per item. It comes from the folder you opened or from the app that launched the player, with per-episode subtitles and segments attached.

Video quality
Optimal, highest, a specific resolution, or one of the sources the launching app supplied. Track names are built from the container's own metadata rather than guessed.

Sleep timer
Off, 15 / 30 / 45 / 60 / 90 minutes, after the current file, or a time typed on a keypad. It fades the volume out over the last thirty seconds instead of cutting off mid-sentence.
Sized for a remote
On Android TV the controls collapse into a single focus row you can cross without hunting, and the d-pad does what a d-pad should.
- ◀ ▶Accelerate while held. A burst of presses commits as one seek instead of a dozen.
- ▼Opens the controls with focus already on the time bar.
- ▲Dismisses them again.
- BackNo longer drops you out of the player by accident.
Frame rate is matched automatically, tunneled playback is used where it works and abandoned where it freezes the picture, and an error report can be uploaded and read off the screen as a QR code — no keyboard needed.
When the stream gives up
- A full-screen error page in plain language instead of an ExoPlayer code, with Copy, Share and Upload log.
- Watchdogs for a load that never starts, a stall in the middle of a film, and a live stream that keeps dropping.
- Fallbacks for Dolby Vision profile 7, for tunneled playback that freezes, and for HLS playlists served without an extension.
- Sturdier audio — passthrough for AC-3, DTS and TrueHD is rebuilt after a seek or a resume, a format the device mishandles is learned and avoided, and playback survives the audio output disappearing underneath it.
- Crash reporting you can switch off in Settings → Privacy.
What it plays
Media3 plus a locally built ffmpeg extension, with every audio decoder enabled. That is what makes the formats a phone normally refuses work.
- Audio
- Vorbis · Opus · FLAC · ALAC · PCM/WAVE (μ-law, A-law) · MP1 · MP2 · MP3 · AMR (NB, WB) · AAC (LC, ELD, HE; xHE on Android 9+) · AC-3 · E-AC-3 · DTS · DTS-HD · TrueHD · IAMF · MPEG-H
- Video
- H.263 · H.264 AVC · H.265 HEVC · MPEG-4 SP · VP8 · VP9 · AV1
- Containers
- MP4 · MOV · WebM · MKV · AVI · Ogg · MPEG-TS · MPEG-PS · FLV
- Streaming
- DASH · HLS · SmoothStreaming · RTSP
- Subtitles
- SRT · SSA/ASS · TTML · VTT · DVB
- HDR
- HDR10+ and Dolby Vision on hardware that supports them. AC-4 works on devices shipping such a system decoder — Samsung Galaxy A, S and Z on Android 11 or later, for instance.
A launcher hands it a queue
Another app opens the player with an ACTION_VIEW intent and passes everything it knows: where to resume, a title and poster, HTTP headers, external subtitles, quality variants, and a playlist of episodes each with its own segments. LAMPA and Lampac plugins already do — they build the intent from the JSON handed to Lampa.Player.play().
Segments are seconds, with the duration they were measured against so the player can rescale them to your file:
{
"duration_ms": 2696000,
"skip": [{"start":62,"end":152}],
"ad": [{"start":0,"end":12}]
}
With position, subs, video_list or quality_levels present, the player keeps positions for that session only and writes nothing to its own resume store — the launcher stays the owner of the watch state.
The extras table, the LAMPA mapping and the ways it goes wrong →Get it
Android 6.0 or later, one APK for phones, tablets and TV. Sideloaded builds check for their own updates and install them in place.