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!
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!