기존에 공개로 나돌아다니는 소스는 대부분 WMP6 를 기반으로 만들어진 소스가 많다.
그래서 실제로 그 소스를 사용하게 되면, 대부분의 명령어가 제대로 먹어들어가지 않아,
애를 먹곤한다.

실제 이쪽 인터페이스의 변경은 WMP7에서 이루워졌지만..자바스크립트로 핸들링하는 것이
늘 한계가 있다는 것을 많은 사람들이 알고 있기 때문에, 쉬이 지나치곤 한다.

몇가지 문제점들이 있는 부분들을 지적하고 기록하는 것이 이 문서의 목적이다.

* 기본 Play, Pause, Stop 문제.
기존에는 Player 객체안에 저 위의 Method들이 전부 존재를 했었는데, WMP7이후로 변경이 되었다.
Player 객체안에다 다시 Controls라는 객체를 안에다 넣어 위의 기본 명령어를 묶었다.
그러므로 기존에 .Play()... 등으로 적은 것들을 .Controls.Play() 등으로 변경해 주어야 한다.

* Mute, Voluem 문제.
이 부분은 위와 같이 Setting 이라는 객체로 묶어서 존재한다. 그러므로 기존에, .Mute 라고 처리했던 부분이
전부 .settings.Mute로 변경 조치를 취해주어야 한다.
그리고 기존에는 Volume 부분이 0~-10,000 범위로 설정되어 있었으나, 이번에는 0~100 으로 범위가 재설정되었다.

* DisplaySize
기존에는 DisplaySize를 자체에서 지원해서 큰 문제가 없었다. 형태별로 크기가 Predefine 되어 있어,
25%, 50%, 100%, 200% 등의 크기를 이 속성을 이용하여 처리를 했다.
그러나 WMP7에는 이런 속성이 없어졌고, 더 이상 이런식으로 처리가 불가능하다. 대신, 객체 자체의
크기를 변경해서 처리하면 해결 된다. 미디어객체.width 와 미디어객체.height를 변경해 줌으로써 해결을
하면 된다.

* 진행 시간 및 총 진행 시간
Play Time을 실시간으로 출력해 주어야 하는데, 이 경우 기존에는 총 시간을 초로 받아서 원하는 형태대로
포멧을 만들어 출력했다. 즉 00:20:10 이 상영 시간이라면 1210 이라는 초 시간을 미디어 플레이어에게서 받아
원하는 형태대로 계산하여 문자열로 만들었다.
그러나 WMP7 이후에는 문자열을 자동으로 생성해 준다. 단, 현재 상영시간과 총 상영시간은 역할이 틀려 각기
다른 객체로 구성되어 있다.
현재 상영시간은 .Controls.currentPositionString 를 통해서 얻는다.
총 상영시간은 .currentMedia.durationString 를 통해서 얻는다.
여기서 currentMedia가 핵심인데, 여기서 얻게 되는 총 상영시간은 현재 상영중인 컨텐츠에 한해지는 것이다.
만일 플레이 리스트가 여러가 존재한다면, 그 전체의 시간이 아닌 현재 상영중인 컨텐츠의 시간만 돌려준다.
또한, 위의 시간의 개념은 스스로 해당하는 부분만 표시한다.
만일 시간이 없는 형태 00:20:10 과 같은 형태라면 20:10 만을 돌려준다. 그 점을 유의해서 처리해야 한다.
추가적인 문자열 처리 작업이 필요하다는 의미이다.

* ASX 포멧 활용
기존 WMP6.4 에서는 Filename이라는 Param 을 이용해 ASX 내용을 그대로 건네주면 해결 되었다. 혹은 ASX 내용이 나오는
ASP를 돌려주면 간단하게 해결 되었다. 그러나 WMP7 이상에서는 그 Param이 사라지고 없다.
그래서 적용할 수 있는 방법이 다소 복잡해 졌다.
일단 JavaScript 로 별도의 함수를 만든다. 그리고 body의 OnLoad에 만든 함수를 걸어 준다.
만든 함수 안에서 미디어 객체에 아래와 같은 작업을 해야한다.

var media;
media = document.MediaPlayer.newMedia("ASX 위치 혹은 ASX내용을 돌려주는 ASP/PHP");
document.MediaPlayer.currentMedia = media;

간단하게 설명하자면 객체의 newMedia 라는 메소드를 이용해 일단 media 객체를 생성한다. 즉 media 객체를 생성하는
메소드는 URL 혹은 ASX 내용이 들어가면 생성이 되기 때문이다. (절대 URL 같은 방법으로는 ASX 내용이 들어가지지 않는다.)
그리고 난뒤에, 현재 미디어플레이어 객체에 있는 currentMedia를 현재 새로 생성한 media로 변경해준다.
이렇게 처리하게 되면, 미디어 잡히게 되고 자동으로 실행되게 된다.


* 기묘한 true 값.
간혹 객체들 중에, true/false 값으로 상태를 변경 처리하는 부분이 있다. 이들을 처리하기 위해 종종 0 과 1을 사용하거나
'true','false' 등을 이용한다. 아직 전부다 실험해 본것은 아니지만 종종 1 이라는 값을 넣으면 실행안되는 속성내용이 있다.
대표적인 것으로 fullScreen 이다. 이에다 'true' 와 1 을 넣어 보았으나 실행이 되지 않는 것이다.
그래서 혹시나 하는 마음에 자동으로 HTML을 생성해주는 Tool을 이용해 보니, -1로 값이 들어가 있고, 그 값이 들어가자
실행이 되는 것이다. 이 부분을 잘 고려 해야 한다.


이상의 내용이 WMP6.4 에서 WMP7 이상으로 업그레이드를 하는 경우에 발생하게될 문제들을 대부분 해결할 수 있다.
그러나 JScript는 성능이나, 기능상 한계가 많기 때문에, 가급적 ActiveX 나 COM 등으로 따로 개발해 통짜로 처리하는 것이
좋은 방안이 될 수 있다.
728x90

+ Recent posts