Lieber pl,
Der macht das ja auch viel zu umständlich.
my @mp3s = <*.mp3>; my $outbin = ''; foreach my $mp3( @mp3s ){ ... $outbin .= $buffer; } chdir "out" or die $^E; my $fh = IO::File->new; $fh->open(join('', @mp3s), O_CREAT|O_BINARY|O_RDWR) or die $!; $fh->print($outbin); $fh->close;
hmm. Wenn es nur um ein simples Konkatenieren von Binärdaten geht, dann hat man in PHP eine noch kürzere Möglichkeit:
header('Content-Type: audio/x-mpeg3');
foreach (glob("$dir/*.mp3") as $f) {
readfile($f); // direct output to browser
}
Allerdings fehlt da noch die Sache mit Content-Length und so weiter...
Mir ist es da viel lieber, die Tag-Informationen aller Dateien würden vor dem Konkatenieren entfernt, damit die Ergebnisdatei wenigstens einigermaßen einem standardisierten Format entspricht (man kann deren Meta-Informationen in einer aufwendigeren Klasse wieder ergänzen). Wenn ich mir z.B. sicher sein kann, dass alle Parameter (wie z.B. die Sample-Rate) in allen Dateien gleich sind, dann hätte ich da wesentlich weniger Bauchschmerzen, als wenn ich "irgendwelche" mp3-Dateien einfach als binären Stream zum Browser sende.
Liebe Grüße,
Felix Riesterer.