>> Read No. 2774 article  
[PHP] vorbis OGG streaming (오타수정)

등록 2002-08-22 04:44:00     조회 5
이름 산이    

		(오타수정: streamming -> streaming)
 안녕하세요?
 -----------------------------
[PHP] vorbis OGG streaming
-----------------------------
 [직접 접근할 경우] - 이 경우는 DocumentRoot 안쪽에 있어야 함
http://www.yourhost.com/any/path/to/something.ogg  [PHP를 사용할 경우] - DocumentRoot  바깥에 있을 경우
http://www.yourhost.com/any/path/to/play.php?stream=xxx&.ogg  ...
 [삽질(?)의 시작]
 특히 vorbis OGG 파일이 DocumentRoot 안쪽에 있을 경우에는
비교적 쉽게 스트리밍이 되지만 바깥쪽에 있을 경우는 상당히
난해(?)하더군요.
 PHP에서 기존 MP3와 같은 방법으로 *.ogg 파일을 읽어서 뿌려지는 형식은
거의 99% 안되더군요.
이 문제를 해결하려고 무려 3일 동안 밤낮(?)으로 헤맸습니다.
 이곳 게시판(LSN), phpschool.com, zend.com, php.net, mod_mp3,
freshmeat.net, sourceforge.net, google.com 등등에서 3일 동안
모조리 뒤졌는데 역시 해결 방법은 없더군요..
 약 10개 정도의 MP3/OGG server를 테스트해 보았는데,
OGG 파일이 DocumentRoot 바깥에 있을 경우는 거의 90% 안되고
kplaylist 하나만 제대로 잘 되더군요..
 오직 하나의 파일로 구성된 kplaylist 분석해 보려고 하니
라인 수가 무려 7000 줄이 훨씬 넘더군요... 헙....
 결국 하나의 파일을 조각조각내서 분석하여, 핵심코드만
골라내어 그대로 적용했는데 역시 실패....
원인을 알 수가 없더군요.. 분명 같은 소스를 그대로 사용했는데도...
 이럴때의 기분을 뭐라고 해야할지....
 결국 답은 아주 사소한 것이더군요..
지금까지 문제의 핵심을 PHP의 header() 함수에 두었는데
예상이 완전히 빗나갔더군요..
  [결론]
 허공(?)에다 삽질만 했던 노력은 날아가고 ...
 문제 해결의 핵심은 player(xmms, winamp, ...)이더군요.
즉 vorbis OGG의 mime-type('application/x-ogg')과는
약간의 거리가 멀고 palyer가 ogg 파일을 연주할때
가상(?)의 확장자(?)를 구별하더군요..
 1. http://www.yourhost.com/something.ogg (ok)
2. http://www.yourhost.com/play.php?stream=1 (fail)
3. http://www.yourhost.com/play.php?file=xxx.ogg (ok)
4. http://www.yourhost.com/play.php?stream=1&file=xxx.ogg (ok)
5. http://www.yourhost.com/play.php?stream=1&_file=xxx.ogg (ok)
6. http://www.yourhost.com/play.php?stream=1&tmp.ogg (ok)
7. http://www.yourhost.com/play.php?stream=1&=xxx.ogg (ok)
8. http://www.yourhost.com/play.php?stream=1&.ogg (ok)
 즉,
player가 URL으로 연주할때는 2번과 같이 제일 마지막에
'.ogg'가 오지 않으면 거의 xmms/winamp는 연주를 못하더군요.
 따라서 PHP에서 playlist를 작성할때 vorbis OGG 파일은 경우는
어떠한 방법으로든지 가상의 확장자(tail)를 '.ogg'로 붙여 줘야하더군요.
(XMPlay 같은 경우는 상관은 없지만)
 --------------------------------
<?
## vorbis OGG 파일인 경우 playlist 작성(예)
##
 header('Content-Disposition: inline; filename=playlist.m3u');
header('Content-Type: audio/x-mpegurl');
echo "http://yourhost.com/play.php?stream=1&file<>=3&.ogg";
echo "http://yourhost.com/play.php?stream=1&file<>=4&.ogg";
echo "http://yourhost.com/play.php?stream=1&file<>=5&.ogg";
 ?>
---------------------------------
  원래 이런건지는 모르겠네요..
혹시 다른 방법을 알고 계신분 있다면 포스팅 부탁합니다.
  http://ftp.linuxchannel.net/devel/php_stream/  에 PHP 예제 소스가 있습니다.
  (참고)
xmms의 경우 vorbis OGG 확장 프러그-인이 있어야 합니다.
이름
암호
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.39 초 ] 작업시간: [ 0.07 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791037633
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.