2009-11-02 4 views
2

Stackoverflow :Perl CGI로 오디오를 스트리밍하는 더 좋은 방법은 무엇입니까?

cs assigment의 경우 다음 코드를 사용하여 오디오를 스트리밍합니다. 그러나 이제는 재생 목록에서 파일을 연속적으로 스트리밍 할 수있는 기능을 추가하고 싶습니다.이를 수용하기 위해 코드를 어떻게 수정할 수 있습니까? 내 스크립트가 순차적으로 스트리밍을 통과하는 파일 이름의 텍스트 파일을 갖고 싶습니다. 이것이 가능한가? 인터넷 검색에 많은 시간을 할애했지만 아직 관련 링크를 찾지 못했습니다.
감사합니다,
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"; 

답변

4

, 나는 오디오 파일의 순서를 나열 특별한 형식의 재생 목록을 제공했다. 그런 다음 플레이어는 필요할 때 오디오 파일을 요청했습니다. 해당 재생 목록을 제공하는 프로그램과 개별 오디오 파일을 제공하는 프로그램이 제공됩니다.

현재 프로그램에 관해서는 Perl 프로그램을 완전히 방해하고 있습니다. 웹 서버가 처리하도록하면 훨씬 빨라집니다. 귀하의 프로그램은 웹 서버가 귀하를 위해 이미하지 않은 것을 수행하지 않으므로 추가 작업을하지 마십시오. :)

+0

그래서 어떻게 perl을 사용하여 재생 목록을 만들까요? –

+0

글쎄, 당신은 클라이언트 측에있는 플레이어를 찾은 다음 플레이리스트에 어떤 포맷을 사용하는지 확인한 다음 그렇게합니다. –

+0

좋아요, 저는 .m3u의 것을 읽었습니다. 그러나 첫 번째 헤더 이후에 무엇을 해야할지 알 수 없습니다. 다음에 플레이어가 기대하는 것은 무엇입니까? # 헤더를 인쇄하십시오. $ cgi-> 헤더를 인쇄하십시오 (-type => 'audio/x-mpegurl', - expires => 'now'); # 파일 이름, 디렉토리를 인쇄 하시겠습니까 ??? 모든 도움을 주신 Mr. Foy에게 감사드립니다. CB –

관련 문제