Что является лучшим способом для потокового аудио с Perl CGI? - PullRequest
2 голосов
/ 02 ноября 2009

Stackoverflow:

Для назначения cs я использую следующий код для потоковой передачи аудио. Однако теперь я хотел бы добавить возможность последовательной потоковой передачи файлов, как в списке воспроизведения, как я могу изменить свой код, чтобы приспособиться к этому? Я хотел бы иметь текстовый файл с именами файлов, через которые каждый сценарий проходит через каждый поток. Это возможно? Я потратил много времени на поиск в Google, но нашел несколько релевантных ссылок.
Спасибо,
CB

#!/usr/bin/perl
use strict;
use CGI::Carp   qw/fatalsToBrowser/;


open(OGGFILE, "../HW1/OGG/ACDC.ogg") or die "open error";

my $buffer;

print "Content-type: audio/ogg\n\n";

binmode STDOUT;

while( read(OGGFILE, $buffer, 16384)){

  print $buffer;

}

close(OGGFILE);

Обновление:

С тех пор я изменил свой код для создания списка воспроизведения, и, похоже, он работает хорошо. Однако, чтобы это работало, я храню свои музыкальные файлы в своей папке html, доступной для всеобщего обозрения. Это простой вопрос изменения прав доступа к файлам для предотвращения прямых ссылок и видимости? Могу ли я изменить эту программу, чтобы она передавала файлы из папки вне / html?

Спасибо CB

#!/usr/bin/perl

use strict;
use CGI qw/:standard/;
use CGI::Pretty qw/:standard/;
use CGI::Carp qw/fatalsToBrowser/;


print header(-type=>'audio/x-mpegurl',-expires=>'now');

printf "#EXTM3U\n";
printf "#EXTINF:-1,Some ACDC song\n";
printf "http://www.mywebserver/MP3/ACDC.ogg\n";
printf "#EXTINF:-1,Some Pink Floyd Song\n";
printf "http://www.mywebserver.com/MP3/PinkFloyd.ogg\n";

1 Ответ

4 голосов
/ 02 ноября 2009

Для плееров, с которыми я имел дело, мне пришлось предоставить специально отформатированный плейлист, в котором перечислены последовательности аудиофайлов. Затем проигрыватель запросил аудиофайлы по мере необходимости. У вас будет одна программа для обслуживания этого списка воспроизведения, а другая - для обслуживания отдельных аудиофайлов.

Что касается вашей текущей программы, я бы полностью избавился от программы Perl. Просто дайте веб-серверу справиться с этим, что будет намного быстрее. Ваша программа не делает ничего, что веб-сервер уже не делает для вас, поэтому не заставляйте ее выполнять дополнительную работу. :)

...