Misconceptions about VLC - 1 Building an application on VLC.

19 September 2007

Languages and environments

C/C++

Let’s start with the natives language of VLC. As you might know or not, most of the code of VLCMP is made in C/C++; also vlc is just a wrapper around libvlc, which is the core library that manages the modules.

So as you have libvlc, it is pretty easy to code an application around it in C/C++. A good example is VLC ;-°)

Java

Every consulting firm would speak about Java…

There are Java bindings in VLC that you can find on the SVN .

There is also a jVLC initiative on the same website .

Python

Python is a fashion scripting language, and guess what, same as Java, VLC has got some bindings !!

JS / ActiveX

You want to build and external applications on top on VLC and don’t want to use the internals at all? JavaScript and ActiveX have a common interface to do all you could dream of.

Examples ? Internet Explorer and Mozilla VLC plugins!

More ? Miro or Songbird

D-Bus

You are running a good Unix and you don’t care about ActiveX and other COM components?

Use D-Bus bindings and the MPRIS interface, that is common to many media players!

C#/.Net

Ohoh! You are a Microsoft hater (which is untrue, anyway), you don’t have any C# bindings…

Well, that is wrong too. The community has built some of them. You can find them easily in the Wiki and in the forum. .Net_Interface and so on. Look at Tappen’s posts.

Fortran, Pascal, Ruby, Perl, PHP

For other languages, we don’t have defined bindings, but you can use the http interface to interact or use the JS bindings… This is doable and has been done many times…

Update: There seems to be bindings also for Ruby (thanks thresh in the comments)

Licence and proprietary application.

Ok, this part can be trickier.

If you are using a GPL-compatible License, then everything is ok for you…

If you want to build a proprietary application, then it is a bit more complicated, but not that much.

If you build an application that needs any VLC source files (headers especially), then you herit from VLC source code and your application needs to be GPL’ed. Therefore you have to use some bindings.

In fact, you can build a proprietary application that “talks” to VLC using some bindings, like ActiveX or D-Bus. If you don’t need VLC internals, that is fine. In fact, in a perfect and theorical world, you could rebuild an application that would understand the same commands as VLC and that would behave in a similar way. You will be then able to switch the applications (VLC and the similar one) but still have your main program working.

So you can build a proprietary application that uses standard communication to use VLC (D-Bus and ActiveX are ok, C/C++/C# natives interface are not ok). However, you still need to respect the GPL and copyrights law, which basically mean you must show the GPL License at installing, you have to mention the VideoLAN Team and clearly states that VLC is not your copyright.

Don’t take my wrong, I don’t like proprietary stuffs build on VLC, but still, this is doable.

So please stop saying that you can’t build an app on VLC media player!

Then profit!

Jean-Baptiste Kempf

Comments

  1. On 11 May 11110, 5:15 by moncler

    was thinking what if a couple of required libvlc names were resolved at runtime ( is it called explicit linking?) after loading the library dynamically.

  2. On 16 May 16160, 2:01 by moncler-italia

    ou want to build and external applications on top on VLC and don’t want to use the internals at all? JavaScript and ActiveX have a common interface to do all you could dream of.

  3. On 9 May 9090, 8:20 by Replacement Laptop DC Adapter

    I was thinking what if a couple of required libvlc names were resolved at runtime ( is it called explicit linking?) after loading the library dynamically. The prototypes of course would be copy-pasted from vlc header files. Do you have any ideas on it?

  4. On 2 May 2020, 10:35 by moncler jackets

    http://www.4unj.com/ nfl jerseys
    http://www.4unj.com/ cheap nfl jerseys
    http://www.4unj.com/ wholesale nfl jerseys

    http://www.ed-hardy.cc ed hardy

    http://www.monclerjacketsstore.com Moncler
    http://www.monclerjacketsstore.com Moncler Outlet
    http://www.monclerjacketsstore.com Moncler Jackets
    http://www.monclerjacketsstore.com Moncler Store

    http://www.ed-hardy.cc/ed-hardy-clo… ed hardy clothing
    http://www.ed-hardy.cc/ed-hardy-sho… ed hardy shoes
    http://www.ed-hardy.cc/Ed-Hardy-Wom… ed Hardy Women clothing
    http://www.ed-hardy.cc/ed-hardy-wom… ed hardy women apparel
    http://www.ed-hardy.cc/ed-hardy-t-s… ed hardy t-shirts
    http://www.ed-hardy.cc/ed-hardy-swi… ed hardy bikini
    http://www.ed-hardy.cc/ed-hardy-swi… ed hardy swimwear
    http://www.ed-hardy.cc/ed-hardy-swi… ed hardy swim trunks
    http://www.ed-hardy.cc/ed-hardy-sun… ed hardy sunglasses
    http://www.ed-hardy.cc/ed-hardy-wat… ed hardy watches
    http://www.ed-hardy.cc/ed-hardy-dre… ed hardy dresses
    http://www.ed-hardy.cc/ed-hardy-cap… ed hardy caps
    http://www.ed-hardy.cc/ed-hardy-tie… ed hardy ties
    http://www.ed-hardy.cc/ed-hardy-bag… ed hardy bags purses

  5. On 24 May 24240, 4:23 by vince

    Can i build a commercial application that use vlc through JNA?

  6. On 7 May 7070, 12:50 by JBK

    @theabsurd: ask the FSF :D

  7. On 30 May 30300, 5:55 by theabsurd

    On D-Bus:
    MPRIS interface seems not to allow for vlc-specific functionality, like all the advanced configuration options.

  8. On 30 May 30300, 5:49 by theabsurd

    On using libvlc from non-GPL code:
    I was thinking what if a couple of required libvlc names were resolved at runtime ( is it called explicit linking?) after loading the library dynamically. The prototypes of course would be copy-pasted from vlc header files. Do you have any ideas on it?

  9. On 20 May 20200, 11:47 by JBK

    Thx thresh! updated.

  10. On 20 May 20200, 12:39 by thresh

    Hey, lies!

    RoR is a framework, not the language.

    But there are ruby libvlc bindings around!