0.1.0 • Published 7 years ago

droopy-vlc v0.1.0

Weekly downloads
11
License
BSD-2-Clause
Repository
github
Last release
7 years ago

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',
	filename: 'myvideofile.avi'
}

##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);
		}
	});
};
0.1.0

7 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago