使用Perl CGI传输音频的更好方法是什么?

时间:2009-11-02 19:27:29

标签: perl web-applications streaming cgi

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 个答案:

答案 0 :(得分:4)

对于我处理过的玩家,我必须提供一个特殊格式的播放列表,列出音频文件的序列。然后播放器根据需要请求音频文件。您将有一个程序来为该播放列表提供服务,另一个程序可以提供单个音频文件。

至于你目前的程序,我会完全避开Perl程序。只需让Web服务器处理它,这将更快。您的程序没有做任何Web服务器没有为您做的事情,所以不要让它做额外的工作。 :)