2 releases
0.1.1 | May 24, 2022 |
---|---|
0.1.0 | May 23, 2022 |
#16 in #media-player
27KB
483 lines
vlc-rc
A rust library used to interact with a VLC player's TCP interface.
About
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!
Requirements
Enabling the VLC interface.
There are two ways to enable VLC's TCP interface.
Option 1
You can launch VLC with CLI args like so:
vlc --rc-host 127.0.0.1:9090 # Or any <host>:<port> you prefer!
Option 2
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.
Usage
Add the library as a dependency to Cargo.toml:
[dependencies]
vlc-rc = "0.1.1
Example
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()?;
Contributing
See CONTRIBUTING.
Dependencies
~2.2–3MB
~55K SLoC