perl stream und netcat

Post Reply
Message
Author
user1

perl stream und netcat

#1 Post by user1 »

HiHo

Ich habe ein Problem mit einem Perlscript, das MP3-Dateien auf einen Server streamt.

Auf dem Server wartet ein Netcat, das den Stream an mplayer weiter leitet:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">nc -l -p 2666 |mplayer -
</font><hr></pre></blockquote>

Auf dem Client ist ein Perlscript, das aus einer Playlist die Datein liest und auf den Server sendet:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">nc -l -p 2666 |mplayer -
</font><hr></pre></blockquote>

Soweit funktioniert das ganze auch mehr oder Weniger.

<li>Nun das Problem ist, dass das erste Lied der Playlist erst so aber der Zehnten bis Zwanzigsten Sekunde abgespielt wird.
<li>Und einige lieder gehen gar nicht, respektive sie werden komischerweise gesendet (t<1s) aber nicht gespielt.
<li>Einige Lieder werden mit der Meldung "Broken Pipe!" abgebrochen.

Ich habe mit dem Buffer etwas gespielt und immer wieder etwas andere Resultate bekommen und "print $sock <SOUND>" bringt auch nichts.

Weiss jemand eine Lösung auf das Problem, oder eine Erklärung für dieses Verhalten?

Merci und Gruss user1

user1

Re: perl stream und netcat

#2 Post by user1 »

Hmm da funktioniert etwas nicht mit dem Board.
Der zweite Code-Teil sollte das Perl-Skript sein:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">

#!/usr/bin/perl
use strict;

use IO::Socket;
my $bsize = 2048;
my ($tmp,$buffer,$dir);

my $sock = new IO::Socket::INET(
PeerAddr => 'homer',
PeerPort => '2666',
Proto => 'tcp',
);

$| = 1;
$sock || die "Could not create socket: $!
";

binmode($sock);
open(PLS,"<@ARGV[0]")||die "No valid playlist.
";

while($tmp = <PLS>){
if($tmp =~ /(\/.*
)/){
$dir = $1;
print $dir."
";
open(SOUND,"<".$dir)||die $!;
binmode(SOUND);

#print $sock <SOUND>;
while(read(SOUND,$buffer,$bsize)){
print $sock $buffer;
}
}

}
close $sock;
</font><hr></pre></blockquote>

Post Reply