====== VideoLAN for Android (pre-alpha) ====== {{ :blog:2011-09-18:vlc-videoplayback.png?500 }} Today while browsing teh interwebz, I came across some information about how to build [[wp>VLC media player]] for android. As someone who uses VLC quite a bit on my desktop, I was quite excited at the prospect of running it on my Android devices, so I went ahead and built a pre-alpha package for it! **UPDATE (2011-09-26): IMPORTANT PLEASE READ:** There seems to be some confusion about these builds. A few notes: **I DID NOT WRITE THE SOURCE FOR VLC-Android**. \\ It was written by the VideoLAN dev team. I simply compiled it based on their wiki and posted the binaries for convenience. I never made any claim that I had contributed any code to this project and stated in the original post that I pulled from their GIT repo and followed their wiki instructions. Please don't falsely attribute work that others have spent so much time on. **VLC-Android IS NOT ANYWHERE NEAR RELEASE**. \\ I reiterate. This is //pre-alpha//. That means that I built it directly from their source at the time. This build is **NOT** supported by VideoLAN (and is in fact already out-of-date). They'll announce when there's a legit release. So I ask you, //please don't pester the VideoLAN people about this//. I respect their work and didn't build this to hammer them with support requests and questions. I apologize to the VLC team for any unintended ill-effects. I simply thought it was impressive even at these early stages and wanted to share it with others. ===== About VLC ===== {{ :blog:2011-09-18:vlc-videos.png?200}} For those of you who aren't familiar with VLC, it is one of the most popular open-source media programs available. It supports virtually every media format available, which is quite frankly, awesome. So why is this so cool for Android? If it can be optimized, especially with the onset of dual-core phones, you can say goodbye to the old days of having to re-encode your video and audio files to a "supported format" for your device. For those who are looking for more information about VLC, you can find their website here: [[http://videolan.org|VideoLAN: VLC Official Site]]. There is a ton of awesome information on that site about the project as well as media-related libraries. I recommend digging around if you have some free time! ===== Compiling VLC yourself ===== For those who want to build these things themselves, information is available on their wiki: [[http://wiki.videolan.org/AndroidCompile|VLC Wiki: AndroidCompile]]. I had zero problems building the system using the [[http://developer.android.com/sdk/ndk/index.html|Android NDK v6b]], although I have heard of several people having quite a few difficulties when attempting to perform the build. ===== Downloads ===== For those who are uninterested or unfamiliar with compilation, I have built the two variants of VLC for Android and they are available on this page. Because VLC for Android makes use of the NDK, **only specific builds will work on specific devices**. Be sure to **read the information below to find out which build works for your device**. ^ BUILD ^ DOWNLOAD LINK ^ SIZE ^ MD5SUM ^^ | VLC for Android (NEON) | [[http://blob.cvpcs.org/android/test/common/VLC-neon.apk|VLC-neon.apk]] | 5841596 bytes | 3aa1f3b0778aef6b070d7f797afac0a6 || | VLC for Android (NONEON) | [[http://blob.cvpcs.org/android/test/common/VLC-noneon.apk|VLC-noneon.apk]] | 6014601 bytes | 7d2c8d22f2f9a834a3086fcbe85c594c || ===== NEON vs NONEON ===== There are two builds available of VLC for Android, known as NEON and NONEON. The difference is in the processor type. Because VLC for Android makes use of the NDK (Native Development Kit), it is compiling native-level binaries that will only work on the processor class for which they were designed. This means that the same build will not work across all devices. Specifically, when building the native VLC libraries for Android, you have to specify whether the target supports NEON floating-point extensions. Certain devices contain a dedicated floating-point unit (FPU) which is used to do floating-point calculations such as division (think fractions). Other devices don't have a dedicated FPU, and instead need to emulate one in software. Although VLC could be built to simply always emulate an FPU and thus work across devices, making use of the dedicated NEON FPU is advantageous from a processing perspective as it offloads work that the CPU has to do. So that's all well and good, but how does one go about checking if their device supports NEON or not? It's actually quite simple. Using either a file manager on your device or simply ADB, locate a file called ///proc/cpuinfo// and open it. When you do, you'll see something like this: Processor : ARMv7 Processor rev 2 (v7l) processor : 0 BogoMIPS : 1597.74 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x1 CPU part : 0xc09 CPU revision : 2 Hardware : mapphone_CDMA Revision : 0000 Serial : 0000000000000000 If you see the word //neon// on the //Features// line, then your device supports NEON extensions. If it's not there, then you'll have to use the NONEON variant of VLC. ===== Support ===== VLC for Android is still in pre-alpha stages, and I am simply building it from their GIT repository using their wiki instructions. As such, don't expect any degree of support for these APKs from the VideoLAN group or myself, and expect bugs. I am only providing this information and these builds for fun, so that others that are interested in this project can play around with the build. That being said, enjoy! ====== tl;dr ====== VLC for Android is awesome! Compilation instructions are [[http://wiki.videolan.org/AndroidCompile|here]]. Prebuilt downloads available [[#Downloads|here]]. Be sure to check if your device supports NEON extensions! Don't expect any level of support. This is pre-alpha and I'm just posting my builds for fun. ~~NOTOC~~