VLC for Android: An Introduction
VLC for Android is the official port of the widely known VLC media player, adapted specifically for Android devices. Like its desktop counterpart, VLC for Android is capable of playing virtually all media file formats, featuring a robust media database for audio and video files, as well as streaming support.
Project Structure
The VLC-Android project is organized into several key folders:
- extension-api: This contains the application extensions SDK, though it hasn't been released yet.
- application: The source code for the Android application is organized here by modules.
- buildsystem: This directory includes build scripts, continuous integration settings, and Maven publication configurations.
- libvlc: This is a gradle module containing the VLC source code that gets cloned into a top-level
vlc/
directory. - medialibrary: A module dedicated to managing the media library features within the application.
LibVLC
LibVLC is the Android library powering the VLC engine. It provides extensive multimedia capabilities, such as:
- Support for all media file formats, codecs, and streaming protocols.
- Efficient hardware decoding across all platforms, supporting resolutions up to 8K.
- Network browsing capabilities for remote files on systems like SMB, FTP, SFTP, NFS, as well as various servers including UPnP and DLNA.
- Playback capabilities for Audio CDs, DVDs, and Blu-rays, complete with menu navigation.
- HDR support, including tonemapping for SDR streams.
- Audio passthrough with SPDIF and HDMI, supporting HD audio codecs like DD+, TrueHD, or DTS-HD.
- Support for a range of video and audio filters.
- 360-degree video and 3D audio playback, including support for Ambisonics.
- The ability to cast and stream media to remote devices, such as Chromecast and UPnP renderers.
Developers can harness the power of LibVLC by downloading an .aar
package from Maven or building it from source. To get started, they can refer to sample codes available on the VideoLAN website.
License
The VLC for Android project is licensed under the GPLv2 (or later), effectively making it a GPLv3 application due to the involvement of Android libraries. Meanwhile, the VLC engine, referred to as LibVLC, is under LGPLv2.
Building the Application
The project provides several ways to build the application:
- Release & Debug: These modes fetch LibVLC and Medialibrary from Bintray, allowing users to build the application source code.
- SignedRelease: Similar to the above, but adds the capability of signing the application APK using a local keystore.
- Dev: In this mode, both LibVLC and Medialibrary are built before building the application, utilizing build scripts.
Building LibVLC requires a modern Linux distribution, although Windows 10 and macOS are also supported unofficially. Detailed setup instructions and build dependencies are available in VideoLAN’s AndroidCompile wiki page.
Contributing
VLC for Android is an open-source project, welcoming all contributions while adhering to its Code of Conduct. Contributors interested in the UI or new features should open an issue for discussion first. Pull requests are managed via the VideoLAN GitLab server, requiring contributors to fork the project and propose merge requests.
Translations
Improving translations for VLC for Android is encouraged through joining the Transifex VLC project, with translation requests being generated from Transifex work.
Issues and Support
For reporting bugs or feature requests, the VLC for Android bug tracker is hosted on VideoLAN’s GitLab. Contributors should provide as much detail as possible, using the provided template to ensure their issues are attended to. For support, several channels are available:
- Android mailing list: [email protected]
- Bug tracker: Hosted on VideoLAN GitLab
- IRC: #videolan channel on Freenode
- VideoLAN forum: A space for community discussions
This structured approach to project introduction ensures clarity and depth, suitable for developers and users alike who wish to engage with VLC for Android.