Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to control VLC by java

Tags:

java

vlc

vlcj

I want to run a program called VLC in java and control it while running, for example if user clicked on ❚❚ or ►► button, I do a specific suitable action.

I run VLC by this code :

try
{
    Runtime rt = Runtime.getRuntime();
    Process p = rt.exec(VLCProgramAddFile + " udp://@:" + listeningPort);

    OutputStream out = p.getOutputStream();
    InputStream in = p.getInputStream();

    p.waitFor();
    System.out.println("End of VLC");
}
catch (Exception e)
{
    System.out.println("error in running VLC");
}

I have heard about Java bindings, but I don't know how does it work for this job.

like image 851
sajad Avatar asked Sep 22 '10 10:09

sajad


2 Answers

VLCj is what you're after yes - it's essentially a straight Java wrapper around libvlc. If you use it in process (especially if you use multiple players in process) you will sometimes see VM crashes - this isn't VLCJ's fault, rather libvlc and the native libraries it uses underneath have some subtle threading bugs that exposes these problems.

You can get it working reliably with multiple instances, but to do so you need to use it out of process. See here for my initial attempts at doing so. It's a bit of work to set up but once going, things seem to work very nicely.

like image 101
Michael Berry Avatar answered Sep 26 '22 23:09

Michael Berry


You are probably looking for VLCJ, this is a java wrapper for VLC. It allows you to embed VLC media player in a java application, and thus add all your personal controls.

(Do note that for user applications this is fine, but the VLCJ library isn't perfect, you can have several problems pop up.)

EDIT: For my project I've seen memory leaks and issues with long running programs (multiple instances for several hours). Especially the multiple instances doesn't work in combination with some compile options (which are on by default).

like image 42
Thirler Avatar answered Sep 26 '22 23:09

Thirler