Skip to content
This repository has been archived by the owner on Aug 20, 2022. It is now read-only.
/ droopy-vlc Public archive
forked from DroopyTersen/droopy-vlc

Node wrapper around VLC Http endpoints

Notifications You must be signed in to change notification settings

Pigpog/droopy-vlc

 
 

Repository files navigation

VLC Http Service

droopy-vlc is an HTTP service that sends commands to VLC's HTTP endpoint.

Example Usage

After installing the npm module (droopy-vlc), you can require the service and start controlling Vlc.

>>npm install droopy-vlc
var VlcService = require("droopy-vlc"),
    vlc = new VlcService("http://:password@localhost:8080");

vlc.volume(80).then(function(vlcStatus) {
	console.log("Successfully set volume to " + vlcStatus.volume);
});

VLC Status

All methods return Q promises that resolve with a VlcStatus object

{
	fullscreen: 'false',
	aspectRatio: 'default',
	time: '1264',
	timeDisplay: '21:04',
	volume: '0',
	duration: '6572',
	durationDisplay: '1:49:32',
	state: 'playing',
	rate: '1',
	position: '0.19233977794647',
	title:'Example Title',
	artist:'Unknown Artist',
	album:'Unknown Album',
	filename: 'example.flac'
}

Supported Methods

status()

Passes back a VlcStatus object.

vlcService.status().then(function(status) {
	console.log(status); //You could continuously poll this
});

seek(time)

Requires a time parameter in seconds.

//move the the 2 minute mark
vlcService.seek(120).then(function(status) {
	console.log(status);
});

volume(val)

Requires a volume level between 0 and 200.

//max volume
vlcService.volume(125).then(function(status) {
	console.log(status);
});

togglePause()

If currently paused the video will play, otherwise pause.

vlcService.togglePause().then(function(status) {
	//statue.state will be "paused" or "playing"
	console.log(status);
});

fullscreen()

If currently fullscreen, it will shrink the window, else make it fullscreen

vlcService.fullscreen().then(function(status) {
	//statue.fullscreen will be "true" or "false"
	console.log(status);
});

rate(speed)

Adjusts the playback speed. Unfortunately I couldn't find a way to make it go backwords like a "rewind"

//Play 3 times as fast (fast forward)
vlcService.rate(3).then(function(status) {
	console.log(status);
});

next()

Next song in the playlist.

vlcService.next().then(function(status) {
	console.log(status);
});

previous()

Previous song in the playlist.

vlcService.previous().then(function(status) {
	console.log(status);
});

play(id)

Play song by id in the playlist.

vlcService.play().then(function(status) {
	console.log(status);
});

deleteItem(id)

Remove song by id in the playlist.

vlcService.deleteItem().then(function(status) {
	console.log(status);
});

empty()

Remove all song in the playlist.

vlcService.empty().then(function(status) {
	console.log(status);
});

playlist()

Return the actual playlist [{ name : String, duration : Number, id : Number},... ]

vlcService.playlist().then(function(vlcPlaylist) {
	console.log(vlcPlaylist);
});

loop()

Repeat the entire playlist

vlcService.loop().then(function(status) {
	console.log(status);
});

repeat()

Repeat the last song

vlcService.repeat().then(function(status) {
	console.log(status);
});

Enabling VLC Http Endpoint

VLC's Http endpoint is not enabled by default. You can enable by launching VLC with a --etraintf http flag. VideoLan documentation

UPDATE: New versions now require you to setup a password to access the HTTP endpoint. To do this go to Tools -> Preferences -> Main Interfaces -> Lua -> Lua HTTP Password.

>>C:\Program Files (x86)\VideoLAN\VLC\vlc.exe -f <filepath> --etraintf http

Opening and closing VLC with node.js

The following are helper methods that I use to launch and close VLC on Windows PC.

exec = require('child_process').exec;

var killVlc = function() {
	try {
		//var cmd = 'tasklist /fi "ImageName eq vlc.exe" /fo csv /nh';
		var cmd = 'taskkill /IM vlc.exe';
		var child = exec(cmd, function(err, stdout, stderr) {
			if (err) {
				console.log(err);
				console.log(stderr);
			}
		});
	} catch (ex) {
		console.log("kill catch");
	}
};

var launchVlc = function(filepath) {
	var params = " -f " + " \"" + filepath + "\" --extraintf http";
	    
	var child = exec(options.exePath + params, function(err, stdout, stderr) {
		if (err) {
			console.log(err);
			console.log(stderr);
		}
	});
};

About

Node wrapper around VLC Http endpoints

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%