Shout
view release on metacpan or search on metacpan
lib/Shout.pm view on Meta::CPAN
if ($compat) {
$self->protocol(Shout::SHOUT_PROTOCOL_ICY()) ? 0 : 1;
} else {
$self->protocol(Shout::SHOUT_PROTOCOL_XAUDIOCAST()) ? 0 : 1;
}
} else {
return ($self->protocol == Shout::SHOUT_PROTOCOL_ICY()) ? 1 : 0;
}
}
sub bitrate ($$) {
my $self = shift or croak "bitrate: Method called as function";
if (@_) {
my $br = shift or croak "bitrate: No parameter specified";
$self->set_audio_info(Shout::SHOUT_AI_BITRATE(), $br) ? 0 : 1;
} else {
return $self->get_audio_info(Shout::SHOUT_AI_BITRATE());
}
}
sub updateMetadata ($$) {
my $self = shift or croak "updateMetadata: Method called as function";
my $metadata = shift or croak "updateMetadata: No metadata specified";
return $self->set_metadata(song => $metadata) ? 0 : 1;
}
for my $method (qw{
host
port
mount
password
user
dumpfile
name
url
genre
description
public
format
protocol
nonblocking
}) {
my $set_method = "shout_set_$method";
my $get_method = "shout_get_$method";
no strict 'refs';
*$method = sub {
my $self = shift;
return $self->$set_method(@_) if @_;
return $self->$get_method();
};
}
1;
__END__
=head1 NAME
Shout - Perl glue for libshout MP3 streaming source library
=head1 SYNOPSIS
use Shout qw{};
my $conn = new Shout
host => 'localhost',
port => 8000,
mount => 'testing',
nonblocking => 0,
password => 'pa$$word!',
user => 'username',
dumpfile => undef,
name => 'Wir sind nur Affen',
url => 'http://stream.io/'
genre => 'Monkey Music',
description => 'A whole lotta monkey music.',
format => SHOUT_FORMAT_MP3,
protocol => SHOUT_PROTOCOL_HTTP,
public => 0;
# - or -
my $conn = Shout->new();
$conn->host('localhost');
$conn->port(8000);
$conn->mount('testing');
$conn->nonblocking(0);
$conn->set_password('pa$$word!');
$conn->set_user('username');
$conn->dumpfile(undef);
$conn->name('Test libshout-perl stream');
$conn->url('http://www.icecast.org/');
$conn->genre('perl');
$conn->format(SHOUT_FORMAT_MP3);
$conn->protocol(SHOUT_PROTOCOL_HTTP);
$conn->description('Stream with icecast at http://www.icecast.org');
$conn->public(0);
### Set your stream audio parameters for YP if you want
$conn->set_audio_info(SHOUT_AI_BITRATE => 128, SHOUT_AI_SAMPLERATE => 44100);
### Connect to the server
$conn->open or die "Failed to open: ", $conn->get_error;
### Set stream info
$conn->set_metadata('song' => 'Scott Joplin - Maple Leaf Rag');
### Stream some data
my ( $buffer, $bytes ) = ( '', 0 );
while( ($bytes = sysread( STDIN, $buffer, 4096 )) > 0 ) {
$conn->send( $buffer ) && next;
print STDERR "Error while sending: ", $conn->get_error, "\n";
last;
} continue {
$conn->sync
}
### Now close the connection
lib/Shout.pm view on Meta::CPAN
shout_open
shout_get_connected
shout_close
shout_metadata_new
shout_metadata_free
shout_metadata_add
shout_set_metadata
shout_send_data
shout_sync
shout_delay
shout_set_host
shout_set_port
shout_set_mount
shout_set_nonblocking
shout_set_password
shout_set_user
shout_set_icq
shout_set_irc
shout_set_dumpfile
shout_set_name
shout_set_url
shout_set_genre
shout_set_description
shout_set_public
shout_get_host
shout_get_port
shout_get_mount
shout_get_nonblocking
shout_get_password
shout_get_user
shout_get_icq
shout_get_irc
shout_get_dumpfile
shout_get_name
shout_get_url
shout_get_genre
shout_get_description
shout_get_public
shout_get_error
shout_get_errno
shout_set_format
shout_get_format
shout_set_protocol
shout_get_protocol
shout_set_audio_info
shout_get_audio_info
shout_queuelen
They work almost identically to their libshout C counterparts. See the libshout
documentation for more information about how to use the function interface.
=head2 :all
All of the above symbols can be imported into your namespace by giving the
'C<:all>' tag as an argument to the C<use> statement.
=head1 DESCRIPTION
This module is an object-oriented interface to libshout, an Ogg Vorbis
and MP3 streaming library that allows applications to easily
communicate and broadcast to an Icecast streaming media server. It
handles the socket connections, metadata communication, and data
streaming for the calling application, and lets developers focus on
feature sets instead of implementation details.
=head1 METHODS
=over 4
=item Constructor
None of the keys are mandatory, and may be set after the connection object
is created. This method returns the initialized icecast server
connection object. Returns the undefined value on failure.
Parameters
=over 8
=item host
destination ip address
=item port
destination port
=item mount
stream mountpoint
=item nonblocking
use nonblocking IO
=item password
password to use when connecting
=item user
username to use when connecting
=item dumpfile
dumpfile for the stream
=item name
name of the stream
=item url
url of stream's homepage
=item genre
genre of the stream
=item format
SHOUT_FORMAT_MP3|SHOUT_FORMAT_VORBIS
( run in 1.619 second using v1.01-cache-2.11-cpan-d8267643d1d )