2006/09/20

Http Playlist 를 이용한 Windows Media Service

약간의 간단한 프로그래밍 지식만 있으면,. 동영상파일의 소스를 숨길수 있습니다...
물론 프로그램코드에 약간의 제어코드만 있으면 되겠죠?..

이부분은 Windows Server 2003 의 미디어서버에 해당되는 내용이며, 새로 추가된 기능입니다.



전체적인 방법은, 다음과 같습니다.

1. 클라이언트는 aaa.wmv를 플래이하고자합니다. 물론 웹에서 입니다.

웹페이지asp,asp.net, php,jsp등의 html 부분에는 mms://xxxx/test 와 같이 링크만 걸립니다.
(*위와 같이 링크만 넣는 이유는 3번 에서 제어하기 때문..)

2. 미디어서버쪽에서의 동영상원본은 플레이리스트로 되어 있으며, 파일내용은 다음과 같습니다.

코드:
<?wsx version="1.0"?> <BR><SMIL><BR><MEDIA src="httpd://www.serverinfo.pe.kr/wms.asp" /><BR></SMIL>


3. http://www.serverinfo.pe.kr/wms.asp 의 소스파일은 다음과 같습니다.

코드:
<SMIL> <BR><MEDIA src="D:\ASF_ROOT\test\test.wmv" />--> 미디어서버의 파일 실제경로로 동적으로 처리.. <BR></SMIL>


--> 프로그램에서 제어처리후, 최종 위와 같은 텍스만 wms.asp 파일에서 리턴해 주면 됩니다.
(*다른 텍스트 들어가면 안됨.)

코드:
<SMIL> <BR><MEDIA src="D:\ASF_ROOT\test\ad.wmv" />-->광고먼저플레이. <BR><MEDIA src="D:\ASF_ROOT\test\test.wmv" />-->요청동영상. <BR></SMIL>


--> 이것은,. 방송사홈페이지등에서 동영상볼때,. 앞서 광고부터 내보내는것과 같습니다.
목록에 있는 파일리스트들이 연속해서 플레이가 됩니다.

특정 클라언트 IP에 따라서 서로다른 동영상을 플레이 해주거나,.. 허용되지 않는 불법접근일 경우 광고를 플레이 할수도 있겠죠..


4. 앞서 html부분 링크와 같이, 실제 클라이언트는 미디어플레이상 주소가 mms://xxxx/test 로만 표시됩니다.

해당 동영상의 등록정보를 아무리 봐도 위 경로로만 보이게 됩니다. 위와 같은 경로형식은 일반적으로 실시간 스트리밍인 브로드케스팅 형식의 주소입니다.

그래서, 실제 경로를 알수도 없을뿐더러 어떤 파일이 플레이 되는지도 알수 없게 됩니다.

인증되지 않는 접근자가 mms://xxxx.xxx.xxx.xxx/test 플레이시는 앞서 말씀드린 것처럼 광고나 파일이 없다고 나온다는 것입니다.

테스트: mms://10.0.0.100/test/

동적 플레이리스트작성 참고 url:
Asp샘플. MSDN참고 
http://msdn.microsoft.com/library/en-us/wmsrvsdk/htm/asppageexamples.asp?frame=true

Asp.net 샘플.  MSDN참고
http://www.microsoft.com/windows/windowsmedia/howto/articles/adinsertion.aspx


좋은기능이기는 하나,.. 연구가 조금더 필요한것이,,.

코드:
2006-04-05 07:15:32 W3SVC2054301095 GET /wms.asp - 80 -
211.234.xxx.xxx HTTP/1.1 WMSServer-HTTP-TextDownload/1.0 ASP.NET_SessionId=0wttgre5d5jeyy55bhnn5y55;+ASPSESSIONIDACASDDQD=
IFMNEJIBEBLHDNAAJACEHNNO - www.serverinfo.pe.kr 200 0 0 300 264 140


http://www.serverinfo.pe.kr/wms.asp 를 미디어서버 자체에서 엑세스 하는 것이므로,
중간에 asp 파일쪽에서 어떤 처리를 해줘서 플레이제한을 하느냐 입니다...

이를테면, 회원로그인을 했을경우 특정 회원의 회원로그인 정보를 공유할때 입니다.

문서에 따르면,. 미디어플레이어9 버젼 이후부터는 클라이언트에 저장된 쿠키를 읽을수 있답니다. 플레이리스트에 있는 도메인에 관련된 쿠키를 웹서버쪽에 넘겨준다는 얘기죠..

코드:
 <?wsx version="1.0"?><BR><SMIL><BR><MEDIA src="httpd://web_server/playlist.asp?%UserCookie_Cookie01%;" /><BR></SMIL>


웹서버쪽에 레퍼러 형식으로 넘겨줄수 있는 값들은 다음과 같은것이 있습니다.

코드:
%UserID%
%UserName%
%UserIP%
%UserAgent%
%QueryString%
%UserGUID%
%PublishingPointPath%
%UserCookie_CookieName%


위 정보는 미디어서버의 로그파일에 쌓이는 정보와 같습니다.

코드:
61.255.40.200 2004-12-19 02:13:55 - /300k보험계약법(공통)
1강320x240.wmv 0 67 1 200 {634D20AD-E700-4E2F-89C2-33479ACB75E4} 6.4.9.1125 ko-KR Mozilla/4.0_(compatible;_MSIE_6.0;_Windows_NT_5.1;_.NET_CLR_1.1 http://xxx.xxx.xxx.xxx/training/moving_play.asp?t_num=1&s_num=1&moving_num=5&data_no=1&total_num=10&now_check=X
IEXPLORE.EXE 6.0.2800.1106 Windows_XP 5.1.0.2600 Pentium 2378 143264352 485421 mms TCP Windows_Media_Audio_9.1 Windows_Media_Video_9 - 4480682
4480682 749 749 0 0 0 0 0 0 1 7 100 211.xxx.xxx.xxx
mms.serverinfo.pe.kr 1 0 - 114 file://D:\ASF_ROOT\300k보험계약
법(공통)1강320x240.wmv
mmst://211.xxx.xxx.xxx/300k보험계약법(공
통)1강320x240.wmv 300k보험계약법(공통)1강320x240.wmv - - 0


Asp예제는 앞서 내용처럼,. 웹서버에서 구운 쿠기이름을 넘겨주면 될것 같고.., 또는
닷넷예제에서는 if( Session["Ads"] == null ) 코드가 있어 세션체크가 가능한것으로 보이고,. 

쿠키와 세션정도만 다룰줄 아는 프로그래머라(asp, asp.net,php,jsp등등..)면,.. 쉽게 웹사이트 적용가능할듯.. 물론 해당 기능 및 로직의 이해가 먼저 이겠지요.


19-wms_152.png

댓글 없음:

댓글 쓰기

가장 많이 본 글