| VideoLan-Client documentation | Contained in the VideoLan-Client distribution. |
VideoLan::Client - interact with VideoLan Client using telnet connection
Version 0.13
use VideoLan::Client;
see METHODS section below
VideoLan::Client allows you to lauchn vlc and control it using vlc connections. VideoLan::Client offer simple I/O methods. VideoLan::Client require Net::Telnet.
In the calling sequences below, square brackets [] represent optional parameters.
$obj = new VideoLan::Client();
$obj = new VideoLan::Client ([HOST => $host,]
[PORT => $port,]
[TIMEOUT => $timeout,]
[PASSWD => $passwd,]
[DEBUG => $debug_file,]
);
This is the constructor for VideoLan::Client objects.
The default host is "localhost"
The default port is 4212
The default timeout is 10 secondes
The default passwd is admin secondes
The default debug is undef. if debug is set to $file, $file will contains the telnet connection log. debug have to be set before the login method
$val = $ojb->login;
If succed return 1, else return 0.
$obj->logout;
$obj->shutdown;
@val = $obj->cmd('commande');
$obj->add_broadcast_media($name,$input,$output);
input and output use the syntaxe of vlc input/output
$obj->load_config_file($file)
$obj->save_config_file($file)
$obj->media_play($name)
$obj->media_stop($name)
$val = lauchnvlc;
Work only if the host is localhost. Will only work on *NIX where nohup commande exist and vlc command is in path. lauchnvlc method is not support actually, just in test.
http://www.videolan.org/
http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm
This example connect to a running vlc, lauchn the help commande and logout.
use VideoLan::Client;
my $vlc = VideoLan::Client->new( HOST =>'192.168.1.10', PORT => '35342', PASSWD => 'mdp_test');
$vlc->login();
my @help = $vlc->cmd("help");
$vlc->logout();
This example connect to a running vlc and shutdown it
use VideoLan::Client;
my $vlc = VideoLan::Client->new( PASSWD => 'mdp_test');
$vlc->login;
my @help = $vlc->shutdown;
$vlc->logout;
http://www.videolan.org/
http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm
Cyrille Hombecq, <elliryc at cpan.com>
Please report any bugs or feature requests to bug-videolan-client at rt.cpan.org, or through
the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=VideoLan-Client. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc VideoLan::Client
You can also look for information at:
Copyright 2008 Cyrille Hombecq, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| VideoLan-Client documentation | Contained in the VideoLan-Client distribution. |
package VideoLan::Client; use warnings; use strict; use Net::Telnet;
our $VERSION = '0.13';
sub new { my $class = shift; my $self = {}; my %args; if(@_){ (%args) =@_; } $self->{HOST} = 'localhost'; $self->{PORT} = '4212'; $self->{TIMEOUT} = 10; $self->{PASSWD} = 'admin'; $self->{DEBUG} = undef; $self->{TELNET} = undef; foreach (keys (%args)){ $self->{$_} = $args{$_}; } bless ($self, $class); return $self; }
sub host { my $self = shift; if (@_) { $self->{HOST} = shift } return $self->{HOST}; }
sub port { my $self = shift; if (@_) { $self->{PORT} = shift } return $self->{PORT}; }
sub timeout { my $self = shift; if (@_) { $self->{TIMEOUT} = shift } return $self->{TIMEOUT}; }
sub passwd { my $self = shift; if (@_) { $self->{PASSWD} = shift } return $self->{PASSWD}; }
sub debug { my $self = shift; if (@_) { $self->{DEBUG} = shift } return $self->{DEBUG}; }
sub login { my $self = shift; my $retour; $self->{TELNET} = new Net::Telnet (Timeout => $self->{TIMEOUT}, Prompt => "/> /", Port => $self->{PORT}, Errmode => 'return'); if(defined($self->{DEBUG})) { $self->{TELNET}->input_log($self->{DEBUG}); } return 0 if (!$self->{TELNET}->open($self->{HOST})); return 0 if (!$self->{TELNET}->waitfor("/Password:/")); return 0 if (!$self->{TELNET}->put($self->{PASSWD} . "\n")); return 0 if (!$self->{TELNET}->waitfor("/> /")); return 1; }
sub logout { my $self = shift; $self->{TELNET}->put("exit\n"); $self->{TELNET}->close; }
sub shutdown { my $self = shift; $self->{TELNET}->put("shutdown\n"); $self->{TELNET}->close; }
sub cmd { my $self = shift; my $cmd = shift; my @retour = $self->{TELNET}->cmd($cmd . "\n"); #~ $self->{TELNET}->waitfor("/> /"); return @retour; }
sub add_broadcast_media { my $self = shift; my ($name,$input,$output) = @_; $self->cmd('new ' . $name . ' broadcast enabled'); $self->cmd('setup ' . $name . ' input ' . $input); $self->cmd('setup ' . $name . ' output ' . $output); }
sub load_config_file { my $self = shift; my $file = shift; $self->cmd('load ' . $file); }
sub save_config_file { my $self = shift; my $file = shift; $self->cmd('save ' . $file); }
sub media_play { my $self = shift; my $media = shift; $self->cmd('control ' . $media . ' play'); }
sub media_stop { my $self = shift; my $media = shift; $self->cmd('control ' . $media . ' stop'); }
sub launchvlc { my $self = shift; if($self->{HOST} eq 'localhost'){ my $cmd = 'nohup vlc --intf telnet --telnet-port ' . $self->{PORT} . ' --telnet-password ' . $self->{PASSWD} . ' >/dev/null &'; my $retour = system($cmd); sleep 2; return $retour; }else{ return 0; } }
1; # End of VideoLan::Client