This is a (WIP) rust library you can use to interact with VLC programmatically by using its built-in TCP interface.
VLC's TCP interface is not well documented, and is very unpredictable at times, making it exceedingly hard to test in a deterministic matter. Regardless, the library aims to be as stable and testable as possible!
There are two ways to enable VLC's TCP interface.
You can launch VLC with CLI args like so:
vlc --rc-host 127.0.0.1:9090 # Or any <host>:<port> you prefer!
You can enable it via the GUI and it will run each time you start VLC.
- Start VLC player.
- At the top-left toolbar, go to
Tools
->Preferences
(Ctrl+P) - Enable 'Advanced Settings' by selecting
All
at the bottom left of the preferences window (just underShow Settings
). - Scroll down until you see the
Interface
item and then selectMain interfaces
. - Below 'Extra interface modules', check the
Lua interpreter
option. - Then to the list on the left, click the arrow next to
Main interfaces
and then select theLua
item. - At the top, set the
Lua interface
field's value torc
. - Just below that, set the
Lua interface configuration
field's value torc={host='127.0.0.1:9090'}
(or any host/port you prefer). - Restart VLC player to start the interface in the background.
Add the library as a dependency to Cargo.toml:
[dependencies]
vlc-rc = "0.1.1
use vlc_rc::Client;
let mut client = Client::connect("127.0.0.1:9090")?;
// Set the player's volume.
client.set_volume(25)?;
assert_eq!(client.get_volume()?, 25);
// Stop the track's playback.
client.stop()?;
assert_eq!(client.is_playing()?, false);
// Skip to the next track.
client.next()?;
See CONTRIBUTING.