Library / SDK
videolan/vlc-android avatar
videolan/vlc-android

VLC for Android: The Official GPL-2.0 Port with LibVLC for Embedding

VLC for Android, Android TV and ChromeOS

4,034 stars858 forksKotlinGPL-2.0

At a glance

What is it?
VLC for Android is the official Android port of VLC from the VideoLAN project. It supports every codec and streaming protocol that desktop VLC does, adds network filesystem browsing, Chromecast casting, and hardware decoding up to 8K, and also ships LibVLC as a separate LGPL-2.0 library that developers can embed in their own Android apps.
Who is it for?
VLC for Android is the right choice for users who need a single media player that handles every local format, network filesystem, and streaming protocol on Android, Android TV, and ChromeOS. Developers who want an embeddable media engine should look at LibVLC specifically; it is licensed under LGPL-2.0 and available on Maven Central, which is more permissive than the GPL-2.0 application layer.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 16 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What VLC for Android Is and Who It Covers

VLC for Android is the official Android port of VLC, maintained by the VideoLAN project. The README describes the scope: it plays all the same files as the classical version of VLC and includes a media database for audio and video files and streams. The application covers three platforms: standard Android phones and tablets, Android TV, and ChromeOS.

The project addresses a gap that most Android media players leave open: a single app that handles every local file format, network-shared filesystem, optical disc protocol, streaming service, and audio/video codec without requiring separate players or per-codec plugins. The target user is anyone who encounters formats that Android's built-in player does not support or who wants to browse a home NAS without a separate file manager.

The source code on GitHub is a mirror of the primary development repository at code.videolan.org/videolan/vlc-android. All pull requests, issues, and contributions are handled through the VideoLAN GitLab instance. The GitHub repository is not the authoritative source for releases or issue tracking.

LibVLC: Capabilities and Embedding Options

LibVLC is the Android library that embeds the VLC engine. The README lists its capabilities:

- Playback of every media file format, codec, and streaming protocol - Hardware-accelerated decoding on every supported platform, up to 8K resolution - Network browsing for remote filesystems (SMB, FTP, SFTP, NFS) and media servers (UPnP, DLNA) - Playback of Audio CD, DVD, and Blu-ray with menu navigation - HDR support with tonemapping for SDR output streams - Audio passthrough via SPDIF and HDMI, including HD audio codecs such as Dolby Digital Plus, TrueHD, and DTS-HD - Video and audio filter support - 360-degree video and 3D audio playback including Ambisonics - Casting and streaming to remote renderers including Chromecast and UPnP renderers

LibVLC is published on Maven Central as `org.videolan.android/libvlc-all` as an `.aar` package. Developers who want to power their own Android media player with the VLC engine can add this dependency directly to their Gradle build without compiling from source. The VideoLAN project maintains a separate sample code repository at code.videolan.org/videolan/libvlc-android-samples to demonstrate integration patterns.

Building from Source: Project Structure and Compile Steps

The project is organized into five directories. `application/` holds the Android app source organized by modules. `libvlc/` is the LibVLC Gradle module; the VLC source code is cloned into a `vlc/` directory at the root level during the build. `medialibrary/` is the Gradle module for the media database. `buildsystem/` contains the build scripts, CI configuration, and Maven publication tooling. `extension-api/` is the Application Extensions SDK, which the README notes has not been released yet.

Building LibVLC requires a Linux host. The README notes that Windows 10 and macOS may work but have no official support. On Debian or Ubuntu, the required build dependencies are:

bash
sudo apt install automake ant autopoint cmake build-essential libtool-bin \
    patch pkg-config protobuf-compiler ragel subversion unzip git \
    openjdk-8-jre openjdk-8-jdk flex python wget

The Android SDK and NDK paths must be set before building:

bash
export ANDROID_SDK=/path/to/android-sdk
export ANDROID_NDK=/path/to/android-ndk

The build command for LibVLC targets a specific ABI:

bash
buildsystem/compile.sh -l -a arm64

The ABI argument accepts `arm`, `arm64`, `x86`, `x86_64`, or `all` for a multi-ABI build. Adding `-r` produces a release build. Medialibrary is built separately with `-ml` instead of `-l`.

For building only the application without compiling native libraries, the Release and Debug Gradle modes pull prebuilt LibVLC and Medialibrary binaries from Bintray as Gradle dependencies. The Dev mode builds everything from source.

Licensing: GPL-2.0 Application, LGPL-2.0 Library

The licensing is split between the two components. VLC for Android, the application, is licensed under GPL-2.0-or-later. The README adds a specific note: Android libraries make it, in practice, a GPLv3 application. This means the full application carries GPLv3 obligations.

LibVLC for Android, which is what developers use to embed the VLC engine in their own apps, is licensed under LGPL-2.0. LGPL-2.0 permits linking without requiring the consuming application to be open source, subject to the standard LGPL requirements around the ability to relink against a modified version of the library. This distinction matters for developers: using LibVLC in a proprietary Android application is different in license terms from distributing a modified version of the VLC app itself.

The README's statement that the application is "libre and open source" reflects the broader VideoLAN project position. For commercial or proprietary uses, the interaction between LibVLC's LGPL-2.0 license and the GPL-2.0-or-later application code requires careful review, particularly if the application layer code is included.

Limitations: No GitHub Releases, Linux Build Requirement, and Unreleased SDK

VLC for Android has no GitHub releases. The release artifacts, changelogs, and version tracking are on the VideoLAN GitLab server at code.videolan.org/videolan/vlc-android. Teams that monitor GitHub releases for dependency updates will not find VLC for Android there. Users looking for APK downloads should go to the VideoLAN GitLab releases page, Google Play, or F-Droid, not GitHub.

Building LibVLC from source is a Linux-only operation with official support. The README states that Windows 10 and macOS may work but provides no guarantees. The dependency list, including automake, ragel, subversion, and specific Java versions, is oriented toward a Linux development environment. Developers who need to build LibVLC on macOS or Windows must accept that build failures are not a supported scenario.

The extension-api directory contains an Application Extensions SDK that the README explicitly marks as "not released yet." This feature is not available for use and its API surface is not documented. Any assumptions about extension functionality are premature based on the current repository state.

Contributions to the code go through the VideoLAN GitLab, not GitHub. GitHub pull requests are not accepted. Translations are handled separately via the Transifex project at app.transifex.com/yaron/vlc-trans/, and translation merge requests are generated from Transifex work rather than directly from contributor branches.

MX Player as the Primary Proprietary Alternative

MX Player is a widely-used proprietary Android video player that focuses on hardware-accelerated local file playback with subtitle and multi-track support. It targets the same primary use case as VLC for Android: playing video files that Android's native player does not handle well.

The key difference is license and source availability. MX Player is proprietary and closed source; VLC for Android is GPL-2.0 with all source available on the VideoLAN GitLab. For users whose concern is trusting the software they install, VLC's complete source availability and its status as an official VideoLAN project is a concrete advantage over a closed-source alternative.

For the network playback and casting use case, VLC for Android includes SMB, FTP, SFTP, NFS, UPnP, and DLNA browsing directly in LibVLC, along with Chromecast and UPnP renderer casting. MX Player's network features have historically been limited to paid extensions. Users running a home media server on Samba or NFS will find that VLC's built-in network browsing covers those protocols without additional configuration.

For developers who want an embeddable media engine, LibVLC is unique in the Android ecosystem: it ships an LGPL-2.0 AAR on Maven Central with hardware decoding, network protocol support, and casting built in. MX Player does not offer a comparable developer library.

Editorial conclusion

VLC for Android is the right choice for users who need a single media player that handles every local format, network filesystem, and streaming protocol on Android, Android TV, and ChromeOS. Developers who want an embeddable media engine should look at LibVLC specifically; it is licensed under LGPL-2.0 and available on Maven Central, which is more permissive than the GPL-2.0 application layer. The main thing to verify before embedding LibVLC is how its LGPL license interacts with your app's license. Contributions and bug reports go to the VideoLAN GitLab instance, not the GitHub mirror.

Frequently asked questions

Can you use VLC on Android?

Yes. VLC for Android is the official Android port maintained by the VideoLAN project. It supports Android phones and tablets, Android TV, and ChromeOS, and plays the same file formats and streaming protocols as the desktop version of VLC.

How do I use local network browsing in VLC for Android?

LibVLC includes built-in support for browsing remote filesystems over SMB, FTP, SFTP, and NFS, and for discovering media servers via UPnP and DLNA. These are core capabilities of the embedded VLC engine, not add-ons. The README does not document the in-app UI steps; the VideoLAN forum at forum.videolan.org covers usage questions.

How do I cast with VLC for Android?

According to the README, LibVLC includes the ability to cast and stream to remote renderers including Chromecast and UPnP renderers. This capability is part of the embedded VLC engine. The in-app steps for initiating a cast session are documented in the VideoLAN forum and the app's own help resources.

Is VLC safe for Android?

VLC for Android is the official release from the VideoLAN project, licensed under GPL-2.0, with full source code available at code.videolan.org/videolan/vlc-android. It is not affiliated with any advertising network or data collection service documented in the README. Unofficial APKs from third-party sites are not produced by VideoLAN.

Official sources

  1. Issues
  2. License: GPL-2.0
  3. README
  4. videolan/vlc-android on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/videolan-vlc-android.svg)](https://hysenlabs.com/projects/videolan-vlc-android)