1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
\r
3 <TITLE>VLC Plugin test page</TITLE>
\r
5 <SCRIPT language="JavaScript"><!--
\r
8 if( navigator.appName.indexOf("Microsoft Internet")==-1 )
\r
12 else if( document.readyState == 'complete' )
\r
18 /* Explorer loads plugins asynchronously */
\r
19 document.onreadystatechange=function()
\r
21 if( document.readyState == 'complete' )
\r
29 function getVLC(name)
\r
31 if (window.document[name])
\r
33 return window.document[name];
\r
35 if (navigator.appName.indexOf("Microsoft Internet")==-1)
\r
37 if (document.embeds && document.embeds[name])
\r
38 return document.embeds[name];
\r
40 else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
\r
42 return document.getElementById(name);
\r
46 function onVLCPluginReady()
\r
53 <BODY onLoad="init();">
\r
55 <TR><TD colspan="2">
\r
57 <INPUT size="90" id="targetTextField" value="">
\r
58 <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">
\r
59 <INPUT type=submit value="Add" onClick="doAdd(document.getElementById('targetTextField').value);">
\r
61 <TR><TD align="center" colspan="2">
\r
63 Insert VideoLAN.VLCPlugin.2
\r
65 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
\r
70 <param name="MRL" value="" />
\r
71 <param name="ShowDisplay" value="True" />
\r
72 <param name="AutoLoop" value="False" />
\r
73 <param name="AutoPlay" value="False" />
\r
74 <param name="Volume" value="50" />
\r
75 <param name="toolbar" value="true" />
\r
76 <param name="StartTime" value="0" />
\r
77 <EMBED pluginspage="http://www.videolan.org"
\r
78 type="application/x-vlc-plugin"
\r
79 version="VideoLAN.VLCPlugin.2"
\r
83 text="Waiting for video"
\r
88 <TR><TD colspan="2">
\r
90 <TD valign="top" width="550">
\r
92 Insert Slider widget
\r
94 </TD><TD width="15%">
\r
95 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>
\r
96 <DIV id="state" style="text-align:center">Stopped...</DIV>
\r
100 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>
\r
101 <INPUT type=button value="Stop" onClick='doStop();'>
\r
103 <INPUT type=button value=" << " onClick='doPlaySlower();'>
\r
104 <INPUT type=button value="Reverse" onClick='doReverse();'>
\r
105 <INPUT type=button value=" >> " onClick='doPlayFaster();'>
\r
107 <INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'>
\r
108 <INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'>
\r
109 <INPUT type=button value=" State " onClick='alert("state: " + getVLC("vlc").input.state);'>
\r
110 </TD><TD align="right">
\r
111 <SPAN style="text-align:center">Volume:</SPAN>
\r
112 <INPUT type=button value=" - " onClick='updateVolume(-10)'>
\r
113 <SPAN id="volumeTextField" style="text-align:center">--</SPAN>
\r
114 <INPUT type=button value=" + " onClick='updateVolume(+10)'>
\r
115 <INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'>
\r
119 <INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'>
\r
120 <INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'>
\r
121 <INPUT type=button value="Clear All" onClick='doPlaylistClearAll();'>
\r
123 <SELECT readonly onChange='doAspectRatio(this.value)'>
\r
124 <OPTION value="default">Default</OPTION>
\r
125 <OPTION value="1:1">1:1</OPTION>
\r
126 <OPTION value="4:3">4:3</OPTION>
\r
127 <OPTION value="16:9">16:9</OPTION>
\r
128 <OPTION value="221:100">221:100</OPTION>
\r
129 <OPTION value="5:4">5:4</OPTION>
\r
131 </TD><TD align="right">
\r
132 <INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'>
\r
133 <INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);">
\r
136 <TR><TD>Audio Channel:
\r
137 <SELECT readonly onClick='doAudioChannel(this.value);'>
\r
138 <OPTION value=1>Stereo</OPTION>
\r
139 <OPTION value=2>Reverse Stereo</OPTION>
\r
140 <OPTION value=3>Left</OPTION>
\r
141 <OPTION value=4>Right</OPTION>
\r
142 <OPTION value=5>Dolby</OPTION>
\r
146 <INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'>
\r
149 <TR><TD> Audio Track:
\r
150 <INPUT type=button value=" + " onClick='doAudioTrack(1);'>
\r
151 <SPAN id="trackTextField" style="text-align:center">--</SPAN>
\r
152 <INPUT type=button value=" - " onClick='doAudioTrack(-1);'>
\r
153 <INPUT type=button value="current track" onClick='alert(getVLC("vlc").audio.description(vlc.audio.track));'>
\r
154 <INPUT type=button value="number of track" onClick='alert(getVLC("vlc").audio.count);'>
\r
157 <INPUT type=button value="set slider" onClick='doSetSlider();'>
\r
158 <INPUT type=button value="get position" onClick='doGetPosition();'>
\r
162 <TD>Video Subtitle:
\r
163 <INPUT type=button value=" + " onClick='doSubtitle(1);'>
\r
164 <SPAN id="spuTextField" style="text-align:center">--</SPAN>
\r
165 <INPUT type=button value=" - " onClick='doSubtitle(-1);'>
\r
166 <INPUT type=button value="current subtitle" onClick='alert(getVLC("vlc").subtitle.description(vlc.subtitle.track));'>
\r
167 <INPUT type=button value="number of subtitle" onClick='alert(getVLC("vlc").subtitle.count);'>
\r
172 <INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlace.enable("blend");'>
\r
173 <INPUT type=button value=" X " onClick='getVLC("vlc").video.deinterlace.enable("x");'>
\r
174 <INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlace.disable();'>
\r
178 <TD>Marquee video filter:
\r
179 <INPUT type=button value="Enable" onClick='getVLC("vlc").video.marquee.enable();'>
\r
180 <INPUT type=button value="Disable" onClick='getVLC("vlc").video.marquee.disable();'>
\r
181 <INPUT size=4 value="" id="marqueeIntValue">
\r
182 <SELECT readonly onClick="doMarqueeOption(this.value,document.getElementById('marqueeIntValue').value);">
\r
183 <OPTION value=1>Color</OPTION>
\r
184 <OPTION value=2>Opacity</OPTION>
\r
185 <OPTION value=3>Position</OPTION>
\r
186 <OPTION value=4>Refresh</OPTION>
\r
187 <OPTION value=5>Size</OPTION>
\r
188 <OPTION value=6>Text</OPTION>
\r
189 <OPTION value=7>Timeout</OPTION>
\r
190 <OPTION value=8>X</OPTION>
\r
191 <OPTION value=9>Y</OPTION>
\r
196 <TD>Logo video filter:
\r
197 <INPUT type=button value="Enable" onClick='getVLC("vlc").video.logo.enable();'>
\r
198 <INPUT type=button value="Disable" onClick='getVLC("vlc").video.logo.disable();'>
\r
199 <INPUT size=4 value="" id="logoIntValue">
\r
200 <SELECT readonly onClick="doLogoOption(this.value,document.getElementById('logoIntValue').value);">
\r
201 <OPTION value=1>File</OPTION>
\r
202 <OPTION value=2>Position</OPTION>
\r
203 <OPTION value=3>Opacity</OPTION>
\r
204 <OPTION value=4>Repeat</OPTION>
\r
205 <OPTION value=5>Delay</OPTION>
\r
206 <OPTION value=6>X</OPTION>
\r
207 <OPTION value=7>Y</OPTION>
213 <INPUT type=button id="telx" value="Teletext off" onClick='doToggleTeletext();'>
\r
215 <INPUT size=4 value="100" id="telxPage" onClick='doTelxPage(document.getElementById("telxPage").value);'>
\r
219 <SCRIPT language="javascript">
\r
224 var telxState = false;
\r
226 function doSetSlider()
\r
228 var vlc = getVLC("vlc");
\r
230 // set slider to new position
\r
232 vlc.input.time = (vlc.input.length/2);
\r
235 function doGetPosition()
\r
237 var vlc = getVLC("vlc");
\r
239 // set slider to new position
\r
241 alert( "position is " + vlc.input.time);
\r
244 function doReverse(rate)
\r
246 var vlc = getVLC("vlc");
\r
248 vlc.input.rate = -1.0 * vlc.input.rate;
\r
251 function doAudioChannel(value)
\r
253 var vlc = getVLC("vlc");
\r
255 vlc.audio.channel = parseInt(value);
\r
258 function doAudioTrack(value)
\r
260 var vlc = getVLC("vlc");
\r
263 vlc.audio.track = vlc.audio.track + value;
\r
264 document.getElementById("trackTextField").innerHTML = vlc.audio.track;
\r
268 function doAspectRatio(value)
\r
270 var vlc = getVLC("vlc");
\r
272 vlc.video.aspectRatio = value;
\r
275 function doSubtitle(value)
\r
277 var vlc = getVLC("vlc");
\r
280 vlc.subtitle.track = vlc.subtitle.track + value;
\r
281 document.getElementById("spuTextField").innerHTML = vlc.subtitle.track;
\r
285 function doTelxPage(value)
\r
287 var vlc = getVLC("vlc");
\r
289 vlc.video.teletext = parseInt(value);
\r
292 function doToggleTeletext()
\r
294 var vlc = getVLC("vlc");
\r
298 vlc.video.toggleTeletext();
\r
301 document.getElementById("telx").innerHTML = "Teletext on";
\r
306 document.getElementById("telx").innerHTML = "Teletext off";
\r
312 function doItemCount()
\r
314 var vlc = getVLC("vlc");
\r
317 var count = vlc.playlist.items.count;
\r
318 document.getElementById("itemCount").value = " Items " + count + " ";
\r
322 function doRemoveItem(item)
\r
324 var vlc = getVLC("vlc");
\r
326 vlc.playlist.items.remove(item);
\r
329 function doPlaylistClearAll()
\r
331 var vlc = getVLC("vlc");
\r
334 vlc.playlist.items.clear();
\r
335 while( vlc.playlist.items.count > 0)
\r
337 // wait till playlist empties.
\r
343 function updateVolume(deltaVol)
\r
345 var vlc = getVLC("vlc");
\r
348 vlc.audio.volume += deltaVol;
\r
349 document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";
\r
353 function formatTime(timeVal)
\r
355 if( typeof timeVal != 'number' )
\r
358 var timeHour = Math.round(timeVal / 1000);
\r
359 var timeSec = timeHour % 60;
\r
361 timeSec = '0'+timeSec;
\r
362 timeHour = (timeHour - timeSec)/60;
\r
363 var timeMin = timeHour % 60;
\r
365 timeMin = '0'+timeMin;
\r
366 timeHour = (timeHour - timeMin)/60;
\r
368 return timeHour+":"+timeMin+":"+timeSec;
\r
370 return timeMin+":"+timeSec;
\r
375 var vlc = getVLC("vlc");
\r
379 newState = vlc.input.state;
\r
381 if( newState == 0 )
\r
383 // current media has stopped
\r
386 else if( newState == 1 )
\r
388 // current media is openning/connecting
\r
391 else if( newState == 2 )
\r
393 // current media is buffering data
\r
396 else if( newState == 3 )
\r
398 // current media is now playing
\r
401 else if( newState == 4 )
\r
403 // current media is now paused
\r
406 else if( newState == 5 )
\r
408 // current media has stopped
\r
411 else if( newState == 6 )
\r
413 // current media has ended
\r
416 else if( newState == 7 )
\r
418 // current media encountered error
\r
425 var vlc = getVLC("vlc");
\r
430 newState = vlc.input.state;
\r
433 if( prevState != newState )
\r
435 if( newState == 0 )
\r
437 // current media has stopped
\r
440 else if( newState == 1 )
\r
442 // current media is openning/connecting
\r
445 else if( newState == 2 )
\r
447 // current media is buffering data
\r
450 else if( newState == 3 )
\r
452 // current media is now playing
\r
455 else if( newState == 4 )
\r
457 // current media is now paused
\r
460 else if( newState == 5 )
\r
462 // current media has stopped
\r
465 else if( newState == 6 )
\r
467 // current media has ended
\r
470 else if( newState == 7 )
\r
472 // current media encountered error
\r
475 prevState = newState;
\r
477 else if( newState == 3 )
\r
479 // current media is playing
\r
486 function doGo(targetURL)
\r
488 var vlc = getVLC("vlc");
\r
492 vlc.playlist.items.clear();
\r
493 while( vlc.playlist.items.count > 0 )
\r
495 // clear() may return before the playlist has actually been cleared
\r
496 // just wait for it to finish its job
\r
498 var options = [":rtsp-tcp"];
\r
499 var itemId = vlc.playlist.add(targetURL,"",options);
\r
504 vlc.playlist.playItem(itemId);
\r
509 alert("cannot play at the moment !");
\r
515 function doAdd(targetURL)
\r
517 var vlc = getVLC("vlc");
\r
518 var options = [":vout-filter=deinterlace", ":deinterlace-mode=linear"];
\r
521 vlc.playlist.add(targetURL, "", options);
\r
527 function doPlayOrPause()
\r
529 var vlc = getVLC("vlc");
\r
532 if( vlc.playlist.isPlaying )
\r
534 vlc.playlist.togglePause();
\r
537 else if( vlc.playlist.items.count > 0 )
\r
539 vlc.playlist.play();
\r
544 alert('nothing to play !');
\r
551 var vlc = getVLC("vlc");
\r
554 vlc.playlist.stop();
\r
559 function doPlaySlower()
\r
561 var vlc = getVLC("vlc");
\r
563 vlc.input.rate = vlc.input.rate / 2;
\r
566 function doPlayFaster()
\r
568 var vlc = getVLC("vlc");
\r
570 vlc.input.rate = vlc.input.rate * 2;
\r
577 document.getElementById("state").innerHTML = "Opening...";
\r
578 document.getElementById("PlayOrPause").value = "Pause";
\r
581 function onBuffer()
\r
583 document.getElementById("state").innerHTML = "Buffering...";
\r
584 document.getElementById("PlayOrPause").value = "Pause";
\r
589 document.getElementById("state").innerHTML = "Playing...";
\r
590 document.getElementById("PlayOrPause").value = "Pause";
\r
596 document.getElementById("state").innerHTML = "End...";
\r
600 var liveFeedText = ["Live", "((Live))", "(( Live ))", "(( Live ))"];
\r
601 var liveFeedRoll = 0;
\r
603 function onPlaying()
\r
605 var vlc = getVLC("vlc");
\r
606 var info = document.getElementById("info");
\r
609 var mediaLen = vlc.input.length;
\r
612 info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);
\r
616 // non-seekable "live" media
\r
617 liveFeedRoll = liveFeedRoll & 3;
\r
618 info.innerHTML = liveFeedText[liveFeedRoll++];
\r
626 document.getElementById("state").innerHTML = "Paused...";
\r
627 document.getElementById("PlayOrPause").value = " Play ";
\r
632 document.getElementById("info").innerHTML = "-:--:--/-:--:--";
\r
633 document.getElementById("state").innerHTML = "Stopped...";
\r
634 document.getElementById("PlayOrPause").value = " Play ";
\r
639 document.getElementById("state").innerHTML = "Error...";
\r
642 function doMarqueeOption(option, value)
\r
644 var vlc = getVLC("vlc");
\r
645 val = parseInt(value);
\r
649 vlc.video.marquee.color = val;
\r
651 vlc.video.marquee.opacity = val;
\r
653 vlc.video.marquee.position = value;
\r
655 vlc.video.marquee.refresh = val;
\r
657 vlc.video.marquee.size = val;
\r
659 vlc.video.marquee.text = value;
\r
661 vlc.video.marquee.timeout = val;
\r
663 vlc.video.marquee.x = val;
\r
665 vlc.video.marquee.y = val;
\r
669 function doLogoOption(option, value)
\r
671 var vlc = getVLC("vlc");
\r
675 vlc.video.logo.file(value);
\r
677 vlc.video.logo.position = value;
\r
678 val = parseInt(value);
\r
680 vlc.video.logo.opacity = val;
\r
682 vlc.video.logo.repeat = val;
\r
684 vlc.video.logo.delay = val;
\r
686 vlc.video.logo.x = val;
\r
688 vlc.video.logo.y = val;
\r