B4A Library vlcb4a - a B4A wrapper of VLC (Android)

vlcb4a - a B4A wrapper of VLC (Android)

NOTE: As of August 2019, this library is not compliant with Google Play store's latest requirements which require native 64bits libs. It is still useable for apps not being distributed on Google Play Store though. If I can find my original sources and if it is not too complicated, I will try to recompile the sources in order to provide 64bit native libs. That said, things have changed over time and personally I would probably use the ExoPlayer (search the forum) these days unless you have codec-issues. Alternatively, you can use my Vitamio5 library/wrapper which has ARM64 and which is just as powerful as VLC.

This is the 2nd experimental release (Work in progress) of my library attempting to wrap VLC for Android (or parts of it) and its underlying libraries (so-files) and the most important properties/methods of VLC in order to provide a VideoView-object for B4A.

What is VLC for Android?
VLC media player is a free and open source cross-platform multimedia player that plays most multimedia files as well as discs, devices, and network streaming protocols. This is the port of VLC media player to the Android™ platform. VLC for Android can play any video and audio files, as well as network streams and DVD ISOs, like the desktop version of VLC.
VLC for Android is a full audio player, with a complete database, an equalizer and filters, playing all weird audio formats.

The official VLC Android app can be found here:
https://play.google.com/store/apps/details?id=org.videolan.vlc

As mentioned above, the vlcb4a wrapper is not the full Android VLC app but more an attempt to wrap the underlying libraries (so-files) and the most important properties/methods of VLC (its engine) to provide a VideoView-object for B4A. Apparently they are/were planning to write a VideoView-class but there has not been any development on this class for ages and all there is, is a "skeleton-class" of no use since even the related MediaPlayer-class is incomplete.

This wrapper provides its own VideoView class which I have written and compiled into the original VLC-sources based on SDK 3. The SDK can be found here: https://code.videolan.org/videolan/vlc-android/tree/master

This release (version 0.77 of June 27, 2016) adds and includes more features and also fixed some issues (see below for details). I have noted that the vlcb4a plays nearly everything I throw at it.

This is still a "Work in progress" and ETAs for new versions cannot be given. However, I think it should be OK for production by now.

In this moment, I have only compiled the so-sources for ARM but I could compile them also for other platforms such as ARM64, X86 and MIPS. Might add them later though.

The minimum SDK version is 7 (although I have not tried it if it works on such old devices).

See the second post for a current summary of methods, properties and events supported.

You can download the wrapper from here:
https://www.dropbox.com/s/i4d9bul243fc1o4/vlcb4aLIBS_v077.zip?dl=0

I also attach a sample-project (vlcdemo.zip) for B4A.

Note: use a real device
Note2: always use the VideoView object in its own activity. Within this activity, you can then add panels, subtitles and so on as usual. See sample project.

Changes in vlcb4a version 0.77 (June 27, 2016):
  • -added native subtitle support
  • -added possibility to change between 6 different video-sizes
  • -added support for selecting different audio-tracks
  • -added a MediaController (uses the standard Android one for now)
  • -added possibility to add VLC-options. You can add logging,
    OpenSL ES, audio time stretching and more. You can find many more options by googling.

  • added volume controls
  • bug fixes
Please report any bugs and/or post general feedback (negative/positive). This will help to keep me motivated and work on the library further.


Good luck!
 

Attachments

  • vlcdemo.zip
    8.8 KB · Views: 929
Last edited:

Binary01

Member
Licensed User
@moster67

I see this feature of vlc in VLC SDK. (not in VLC Android) and use it in my QtVLC App for PC version not in android.
I have more than 5000 songs and these songs have different music channels (Stereo, Left and Right).

In VLC SDK.
Vlc::AudioChannel VlcAudio::channel() const
{
Vlc::AudioChannel channel = Vlc::AudioChannelError;
if (_vlcMediaPlayer) {
channel = Vlc::AudioChannel(libvlc_audio_get_channel(_vlcMediaPlayer));
VlcError::showErrmsg();
}

return channel;
}

void VlcAudio::setChannel(Vlc::AudioChannel channel)
{
if (_vlcMediaPlayer) {
// Don't change if channel is the same
if (channel != VlcAudio::channel()) {
libvlc_audio_set_channel(_vlcMediaPlayer, channel);
VlcError::showErrmsg();
}
}
}

kicN5Q


Thank you for your contribution.
 
Last edited:

moster67

Expert
Licensed User
I checked yesterday before writing my reply but I could not find this api in the Android SDK so I cannot really do anything. Sorry.
If in the future such an api will be included in the Android SDK, I will happily add it to the wrapper.
 

MAGAREY

Member
Licensed User
It's possible to run it on Android tv?
When i tried throws an error like this:
[INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
 

moster67

Expert
Licensed User
This means you were trying to install an app that has native libraries (in this case vlcb4a) and it doesn't have a native library for your cpu architecture. For example if you compiled an app for armv7 and are trying to install it on a device that uses the Intel architecture instead it will not work.

Android TV is running on various platforms (different hardware) such as Nvida Shield but also included in Television sets. You need to find out the cpu architecture on the device you are using and see if it is compatible with ARM.

I don't know if I still have the sources for compiling the binaries for vlcb4a but I might have a look if you let me know the cpu architecture needed.
 

blong

Active Member
Licensed User
Perhaps overlooked something

BUT

Is there a way to get the MEDIA information from a video stream like a .ts stream

i.e. the size of the stream 1920 x 1080 or 1280 x 720 etc

I wish to open a stream and get the stream INFO

Thx in advance
 

fraenri

New Member
Licensed User
If there is someone with a device running one of the following platforms: ARM64, X86 and MIPS and who would like to help out testing vlcb4a, please contact me in PM.
Thank you.
Hi, I have released an App that use your library and I try to publicate it on Play Store, but the APK uploaded is not accepted because does not contain 64bit code.
How can I obtain ARM64 version of library?
Thanks
 

moster67

Expert
Licensed User
Hi, I have released an App that use your library and I try to publicate it on Play Store, but the APK uploaded is not accepted because does not contain 64bit code.
How can I obtain ARM64 version of library?
Thanks
Hi, yes you are right. This is an old library and I ought to have marked this library as not compliant with Google Play store's latest requirements. It is still useable for apps not being distributed on Google Play Store though. I will now update the first post accordingly.

I don't recall if I ever compiled ARM64 native libs for this library. I will have a look but I am not really even sure if I still have the sources. Will check and see what I can do.

That said, things have changed over time and personally I would probably use the ExoPlayer (search the forum) these days unless you have codec-issues. Alternatively, you can use my Vitamio5 library/wrapper which has ARM64 and which is just as powerful as VLC.
 
Last edited:

DonManfred

Expert
Licensed User
Last edited:

AbdurRahman

Member
Please report any bugs and/or post general feedback (negative/positive). This will help to keep me motivated and work on the library further.
Good luck!
@moster67
Looks like this old but powerful wrapper isn't updated for a while. This lib is huge gift for everyone using b4a.
Brother I wish if this lib uses updated vlc *.so files and I can direct feed media using bytes or stream.

Reason:
1) *.so files of 2020 have more developments, optimizations and features than of 2016. (I verify)
2) Sometimes, you have video embed as resource. So direct feed media will help me in this regard.
Thanks brother.
 

rasul.g

Member
Hi.

I tested this library (v0.77) by some video files on some devices.

It's a good library and in terms of supporting video/audio codecs works slightly better than other libraries but unfortunately, it got a very bad freeze without any error in some video formats.

for example, The player get freezes with these video files on "galaxy a20" (android 10) (no error- just app get freezes and it doesn't respond anymore)
source code and videos

also please update this library. I think it can be a very good library.
 
Top