Skip to content

About

Offline, plays-everything Android video player built in Kotlin on libVLC - AMOLED dark UI, gesture controls, speed/track/aspect/sync options, and playback resume.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Oynatıcı

A simple, offline Android video player that plays everything — built on libVLC, so it handles whatever format you throw at it. No streaming, no accounts, no ads. Just your videos, in a clean AMOLED-black interface.

Kotlin Android libVLC License: MIT

Why

Most stock players choke on something — an odd codec, an MKV, a high-bitrate file — and half the alternatives are bloated with logins, cloud features and ads. I wanted a plain, offline player that just opens the videos already on my phone and plays them, regardless of format, and remembers where I left off. So I wrapped libVLC (the engine behind VLC) in a clean Kotlin app, gave it a proper dark theme and gesture controls, and kept everything else out of the way. It's built and tuned for a Samsung A73-class device, but runs on anything from Android 7.0 up.

Build

You'll need Android Studio (or a local Android SDK) with JDK 17.

git clone https://github.com/0iroN/videoplayer.git
cd videoplayer

Android Studio: open the project folder, let Gradle sync, then Run (or Build > Build Bundle(s) / APK(s) > Build APK(s)).

Command line:

./gradlew assembleDebug      # builds app/build/outputs/apk/debug/app-debug.apk

Then install the APK on a connected device:

adb install app/build/outputs/apk/debug/app-debug.apk

Note: the build targets arm64-v8a only, which covers modern phones (Samsung A73 and the like). The first sync pulls libVLC from Maven Central, so it can take a little while.

Usage

Launch the app and grant the media-read permission on first run. The library screen lists every video on the device; tap one to play, long-press to delete it.

  • Filter by folder with the top spinner (each folder shows its video count).
  • Sort by name, duration, date added, or file size.
  • Play — tap a video to open the full-screen player.

In the player, everything is gesture- and tap-driven:

  • Single tap — show/hide the control bar (it auto-hides after a few seconds).
  • Double-tap left or right half — jump back / forward 10 seconds.
  • Drag horizontally — scrub, with a live thumbnail preview of the target frame.
  • Drag vertically on the left — adjust screen brightness.
  • Drag vertically on the right — adjust volume.

The control bar itself carries play/pause, previous, next, shuffle, playback speed, aspect/zoom, orientation, audio track, subtitle, and A/V sync.

Features

  • Plays everything — playback is handled by libVLC, so practically any container or codec works (MKV, AVI, MP4, MOV, and more) without extra plugins.
  • Fully offline — videos are discovered from your device via Android's MediaStore. No network access at all; the app requests only media-read permission.
  • AMOLED dark UI — a true-black theme with a card-based library list, crisp vector icons throughout, and an adaptive launcher icon.
  • Resume where you left off — playback position is remembered per video and restored on reopen; finished videos are cleared automatically.
  • Playback speed — cycle through 0.5×, 0.75×, 1×, 1.25×, 1.5×, and 2×.
  • Audio & subtitle tracks — pick from the embedded audio and subtitle tracks, or load an external .srt from a file.
  • Aspect ratio / zoom — cycle fit, fill, and common ratios to match your screen.
  • Orientation — auto-fits portrait or landscape to the video, or lock it manually.
  • A/V sync control — nudge audio delay in 50 ms steps, with a software-decode fallback for stubborn audio drift.
  • Brightness & volume gestures — swipe vertically on the left or right half of the screen.
  • Scrub with preview — drag to seek and see a thumbnail of the frame you're landing on.
  • Folder filter with counts — group videos by their folder (bucket); each shows how many it holds.
  • Sorting — by name, duration, date added, or file size.
  • Long-press to delete — remove a video from the device straight from the list, with a confirmation dialog.
  • Playlist controls — next, previous, shuffle, and auto-advance to the next video when one ends.
  • Full-screen player — tap-to-toggle, auto-hiding controls, and keep-screen-on while playing.

Notes

  • Grant the media permission on first launch (READ_MEDIA_VIDEO on Android 13+, READ_EXTERNAL_STORAGE on older versions) so the app can list your videos.
  • Deleting a video removes it from the device permanently; the app uses the system's own delete confirmation on Android 10+.
  • This is a local-files player — it does not stream from the internet and has no network permission.
  • Minimum Android 7.0 (API 24); built and tested against API 34.

License

MIT © Osman Demir · osmandemir.net

About

Offline, plays-everything Android video player built in Kotlin on libVLC - AMOLED dark UI, gesture controls, speed/track/aspect/sync options, and playback resume.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages