explaingit

videolan/vlc-android

Analysis updated 2026-07-03

3,726KotlinAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

The official VLC media player for Android, supporting a huge range of video and audio formats, network streaming over SMB/FTP/NFS, hardware decoding up to 8K, Blu-ray menus, and HD audio, plus a standalone LibVLC SDK developers can embed in their own apps.

Mindmap

mindmap
  root((vlc-android))
    What it does
      Media playback
      Network streaming
      Media library
    Formats and features
      8K video
      Hardware decoding
      Blu-ray menus
      HD audio passthrough
    Platforms
      Android phone
      Android TV
      ChromeOS
    LibVLC SDK
      Maven library
      Developer API
      Standalone use
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

What do people build with it?

USE CASE 1

Embed LibVLC in your own Android app as a Maven dependency to play virtually any video or audio format with hardware decoding support.

USE CASE 2

Build the full VLC for Android app from source to add custom features or test on a specific Android version or device type.

USE CASE 3

Stream media from a home NAS directly on an Android device over SMB, FTP, or NFS without copying files locally.

What is it built with?

KotlinAndroidC++LibVLC

How does it compare?

videolan/vlc-androidjetbrains/intellij-platform-plugin-templategit-xuhao/kotlinmvp
Stars3,7263,7333,709
LanguageKotlinKotlinKotlin
Setup difficultyhardmoderatemoderate
Complexity4/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Standard app build is straightforward, a full native build requires a Linux machine with Android SDK, NDK, and several system dependencies.

The app is GPLv2 or later (modifications must stay open source), LibVLC is LGPLv2 (can be linked into other apps, including proprietary ones, under certain conditions).

In plain English

This is the official Android version of VLC, the widely used open-source media player. VLC for Android is maintained by the VideoLAN organization and supports the same broad range of file formats as the desktop version of VLC, along with a media database for organizing audio and video files and streams on the device. At the core of the Android app is LibVLC, a library that bundles the VLC playback engine for use on Android. LibVLC handles format compatibility, hardware decoding, and network features. It can play files up to 8K resolution, supports streaming protocols including SMB, FTP, SFTP, and NFS for browsing network shares, and can play physical media like DVDs and Blu-rays including their menu systems. Audio features include HD audio passthrough formats (Dolby TrueHD, DTS-HD, and others), and the library also supports 360-degree video and 3D audio. LibVLC is also available as a standalone Android library that developers can use to add media playback to their own apps, distributed through Maven. The project is structured into several modules: the main Android application code, the LibVLC module that wraps the VLC engine, a medialibrary module for the media database, and build scripts for CI and packaging. The app targets Android, Android TV, and ChromeOS. Building the application can be done at different levels. A standard build pulls precompiled native libraries from a package repository and only compiles the application code. A full build compiles LibVLC from source, which requires a Linux environment with specific dependencies and the Android SDK and NDK installed. Instructions are in the README and the VideoLAN wiki. Code contributions are accepted through the project's GitLab instance, not GitHub. Translation contributions go through Transifex. The app is licensed under GPLv2 or later, and LibVLC is licensed under LGPLv2. Bug reports and feature requests are tracked on the VideoLAN GitLab issue tracker.

Copy-paste prompts

Prompt 1
Show me how to add the LibVLC library to my Android app as a Gradle dependency from Maven and play a local video file in a SurfaceView.
Prompt 2
How do I set up a Linux build environment to compile the full VLC for Android app from source, including the native LibVLC components?
Prompt 3
Write an Android activity that uses LibVLC to open and play a video stream from a network share over SMB with hardware decoding enabled.
Prompt 4
What video formats does LibVLC for Android support for hardware decoding, and how do I detect whether hardware decoding is being used at runtime?
Prompt 5
How do I submit a bug report or code contribution to the VLC for Android project given that it uses GitLab rather than GitHub?

Frequently asked questions

What is vlc-android?

The official VLC media player for Android, supporting a huge range of video and audio formats, network streaming over SMB/FTP/NFS, hardware decoding up to 8K, Blu-ray menus, and HD audio, plus a standalone LibVLC SDK developers can embed in their own apps.

What language is vlc-android written in?

Mainly Kotlin. The stack also includes Kotlin, Android, C++.

What license does vlc-android use?

The app is GPLv2 or later (modifications must stay open source), LibVLC is LGPLv2 (can be linked into other apps, including proprietary ones, under certain conditions).

How hard is vlc-android to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is vlc-android for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub videolan on gitmyhub

Verify against the repo before relying on details.