1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
\r
3 <TITLE>VLC Plugin test page</TITLE>
\r
8 font-family : Arial, Helvetica, sans-serif;
\r
13 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/LibCrossBrowser.js"></SCRIPT>
\r
14 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/EventHandler.js"></SCRIPT>
\r
15 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/core/form/Bs_FormUtil.lib.js"></SCRIPT>
\r
16 <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/components/slider/Bs_Slider.class.js"></SCRIPT>
\r
18 <SCRIPT language="JavaScript"><!--
\r
20 inputTracker = new Bs_Slider();
\r
21 inputTracker.attachOnChange(onInputTrackerChange);
\r
22 inputTracker.attachOnSlideStart(onInputTrackerScrollStart);
\r
23 inputTracker.attachOnSlideEnd(onInputTrackerScrollEnd);
\r
24 inputTracker.width = 530 ;
\r
25 inputTracker.height = 15;
\r
26 inputTracker.minVal = 0;
\r
27 inputTracker.maxVal = 1.0;
\r
28 inputTracker.valueDefault = 0;
\r
29 inputTracker.valueInterval = 1/530;
\r
30 inputTracker.setDisabled(true);
\r
31 inputTracker.imgDir = 'blueshoes-4.5/javascript/components/slider/img/';
\r
32 inputTracker.setBackgroundImage('aluminumalloyvolcanic/horizontal_background.gif', 'repeat');
\r
33 inputTracker.setArrowIconLeft('aluminumalloyvolcanic/horizontal_backgroundLeft.gif', 2, 19);
\r
34 inputTracker.setArrowIconRight('aluminumalloyvolcanic/horizontal_backgroundRight.gif', 2, 19);
\r
35 inputTracker.setSliderIcon('aluminumalloyvolcanic/horizontal_knob.gif', 15, 19);
\r
36 inputTracker.useInputField = 0;
\r
37 inputTracker.draw('inputTrackerDiv');
\r
39 if( navigator.appName.indexOf("Microsoft Internet")==-1 )
\r
43 else if( document.readyState == 'complete' )
\r
49 /* Explorer loads plugins asynchronously */
\r
50 document.onreadystatechange=function() {
\r
51 if( document.readyState == 'complete' )
\r
59 function getVLC(name)
\r
61 if (window.document[name])
63 return window.document[name];
\r
65 if (navigator.appName.indexOf("Microsoft Internet")==-1)
\r
67 if (document.embeds && document.embeds[name])
\r
68 return document.embeds[name];
70 else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
\r
72 return document.getElementById(name);
\r
76 function onVLCPluginReady()
\r
83 <BODY onLoad="init();">
\r
85 <TR><TD colspan="2">
\r
87 <INPUT size="90" id="targetTextField" value="">
\r
88 <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);">
\r
89 <INPUT type=submit value="Add" onClick="doAdd(document.getElementById('targetTextField').value);">
\r
91 <TR><TD align="center" colspan="2">
\r
93 Insert VideoLAN.VLCPlugin.2
95 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
\r
100 <param name="MRL" value="" />
\r
101 <param name="ShowDisplay" value="True" />
\r
102 <param name="AutoLoop" value="False" />
\r
103 <param name="AutoPlay" value="False" />
\r
104 <param name="Volume" value="50" />
\r
105 <param name="toolbar" value="true" />
\r
106 <param name="StartTime" value="0" />
\r
107 <EMBED pluginspage="http://www.videolan.org"
\r
108 type="application/x-vlc-plugin"
\r
109 version="VideoLAN.VLCPlugin.2"
\r
117 <TR><TD colspan="2">
\r
119 <TD valign="top" width="550">
\r
121 Insert Slider widget
\r
123 <DIV id="inputTrackerDiv"</DIV>
\r
124 </TD><TD width="15%">
\r
125 <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV>
\r
126 <DIV id="state" style="text-align:center">Stopped...</DIV>
\r
130 <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'>
\r
131 <INPUT type=button value="Stop" onClick='doStop();'>
\r
133 <INPUT type=button value=" << " onClick='doPlaySlower();'>
\r
134 <INPUT type=button value=" >> " onClick='doPlayFaster();'>
\r
135 <INPUT type=button value="Backward" onClick='doBackwardPlay(500);'>
\r
136 <INPUT type=button value="Forward" onClick='doForwardPlay(500);'>
\r
137 <INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'>
\r
138 <INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'>
\r
139 <INPUT type=button value=" State " onClick='doState();'>
\r
140 </TD><TD align="right">
141 <SPAN style="text-align:center">Volume:</SPAN>
\r
142 <INPUT type=button value=" - " onClick='updateVolume(-10)'>
\r
143 <SPAN id="volumeTextField" style="text-align:center">--</SPAN>
\r
144 <INPUT type=button value=" + " onClick='updateVolume(+10)'>
\r
145 <INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'>
\r
149 <INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'>
\r
150 <INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'>
\r
151 <INPUT type=button value="Clear All" onClick='getVLC("vlc").playlist.clear(); doItemCount();'>
\r
153 <SELECT readonly onChange='doAspectRatio(this.value)'>
154 <OPTION value="default">Default</OPTION>
155 <OPTION value="1:1">1:1</OPTION>
156 <OPTION value="4:3">4:3</OPTION>
157 <OPTION value="16:9">16:9</OPTION>
158 <OPTION value="221:100">221:100</OPTION>
159 <OPTION value="5:4">5:4</OPTION>
161 </TD><TD align="right">
\r
162 <INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'>
\r
163 <INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);">
\r
167 <INPUT type=button value="Messages" onClick='doMessages();'>
\r
169 <INPUT size=2 value="1" id="verbosity" onClick="doVerbosity(document.getElementById('verbosity').value);">
\r
170 <INPUT type=button value=" + " onClick='doVerbosity(1);'>
\r
171 <INPUT type=button value=" - " onClick='doVerbosity(-1);'>
\r
174 <DIV id="message" style="text-align:center">no message</DIV>
\r
177 <TR><TD>Audio Channel:
\r
178 <SELECT readonly onClick='doAudioChannel(this.value);'>
\r
179 <OPTION value=1>Stereo</OPTION>
\r
180 <OPTION value=2>Reverse Stereo</OPTION>
\r
181 <OPTION value=3>Left</OPTION>
\r
182 <OPTION value=4>Right</OPTION>
\r
183 <OPTION value=5>Dolby</OPTION>
\r
187 <INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'>
\r
190 <TR><TD> Audio Track:
\r
191 <INPUT type=button value=" + " onClick='doAudioTrack(1);'>
\r
192 <SPAN id="trackTextField" style="text-align:center">--</SPAN>
\r
193 <INPUT type=button value=" - " onClick='doAudioTrack(-1);'>
\r
196 <INPUT type=button value="set slider" onClick='doSetSlider();'>
\r
197 <INPUT type=button value="get position" onClick='doGetPosition();'>
\r
202 <INPUT type=button value=" + " onClick='doSubtitle(1);'>
203 <SPAN id="spuTextField" style="text-align:center">--</SPAN>
204 <INPUT type=button value=" - " onClick='doSubtitle(-1);'>
209 <INPUT type=button id="telx" value="Teletext off" onClick='doToggleTeletext();'>
211 <INPUT size=4 value="100" id="telxPage" onClick="doTelxPage(document.getElementById('telxPage').value);">
215 <SCRIPT language="javascript">
\r
220 var monitorTimerId = 0;
\r
221 var rateTimerId = 0;
\r
222 var inputTrackerScrolling = false;
\r
223 var inputTrackerIgnoreChange = false;
\r
224 var telxState = false;
226 function doSetSlider()
\r
228 var vlc = getVLC("vlc");
\r
232 // set slider to new position
\r
233 vlc.input.time = (vlc.input.length/2);
\r
237 function doGetPosition()
\r
239 var vlc = getVLC("vlc");
\r
243 // set slider to new position
\r
244 alert( "position is " + vlc.input.time);
\r
248 function doForwardPlay(speed)
\r
250 if (rateTimerId == 0)
\r
252 rateTimerId = setInterval("ratechange()", speed);
\r
255 else rate = rate + speed;
\r
258 function doBackwardPlay(speed)
\r
260 if (rateTimerId == 0)
\r
262 rateTimerId = setInterval("ratechange()", speed);
\r
265 else rate = rate - speed;
\r
268 function ratechange()
\r
270 if (rateTimerId != 0)
\r
272 var vlc = getVLC("vlc");
\r
273 vlc.input.time = vlc.input.time + rate;
\r
277 function doVerbosity(value)
\r
279 var vlc = getVLC("vlc");
\r
280 vlc.log.verbosity = vlc.log.verbosity + value;
\r
281 document.getElementById("verbosity").value = vlc.log.verbosity;
\r
284 function doAudioChannel(value)
\r
286 var vlc = getVLC("vlc");
\r
287 vlc.audio.channel = parseInt(value);
\r
290 function doAudioTrack(value)
\r
292 var vlc = getVLC("vlc");
\r
293 vlc.audio.track = vlc.audio.track + value;
\r
294 document.getElementById("trackTextField").innerHTML = vlc.audio.track;
\r
297 function doAspectRatio(value)
\r
299 var vlc = getVLC("vlc");
\r
300 vlc.video.aspectRatio = value;
\r
303 function doSubtitle(value)
305 var vlc = getVLC("vlc");
306 alert(vlc.video.subtitle + value);
307 vlc.video.subtitle = vlc.video.subtitle + value;
308 document.getElementById("spuTextField").innerHTML = vlc.video.subtitle;
311 function doTelxPage(value)
313 var vlc = getVLC("vlc");
315 vlc.video.teletext = 889; //value;
318 function doToggleTeletext()
320 var vlc = getVLC("vlc");
322 vlc.video.toggleTeletext();
325 document.getElementById("telx").innerHTML = "Teletext on";
327 alert( "telextext on" );
331 document.getElementById("telx").innerHTML = "Teletext off";
333 alert( "telextext off" );
337 function doItemCount()
\r
339 var vlc = getVLC("vlc");
\r
340 var count = vlc.playlist.itemCount;
\r
341 document.getElementById("itemCount").value = " Items " + count + " ";
\r
344 function doRemoveItem(item)
\r
346 var vlc = getVLC("vlc");
\r
347 vlc.playlist.removeItem(item);
\r
350 function doMessages()
\r
352 var vlc = getVLC("vlc");
\r
354 if( vlc.log.messages.count > 0 )
\r
356 // there is one or more messages in the log
\r
357 var iter = vlc.log.messages.iterator();
\r
358 while( iter.hasNext )
\r
360 var msg = iter.next();
\r
361 if( msg.severity <= 1 )
\r
363 document.getElementById("message").innerHTML = msg.message;
\r
366 // clear the log once finished to avoid clogging
\r
367 vlc.log.messages.clear();
\r
371 function updateVolume(deltaVol)
\r
373 var vlc = getVLC("vlc");
\r
374 vlc.audio.volume += deltaVol;
\r
375 document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%";
\r
378 function formatTime(timeVal)
\r
380 var timeHour = Math.round(timeVal / 1000);
\r
381 var timeSec = timeHour % 60;
\r
383 timeSec = '0'+timeSec;
\r
384 timeHour = (timeHour - timeSec)/60;
\r
385 var timeMin = timeHour % 60;
\r
387 timeMin = '0'+timeMin;
\r
388 timeHour = (timeHour - timeMin)/60;
\r
390 return timeHour+":"+timeMin+":"+timeSec;
\r
392 return timeMin+":"+timeSec;
\r
397 var vlc = getVLC("vlc");
\r
398 var newState = vlc.input.state;
\r
400 if( newState == 0 )
\r
402 // current media has stopped
405 else if( newState == 1 )
\r
407 // current media is openning/connecting
\r
410 else if( newState == 2 )
\r
412 // current media is buffering data
\r
415 else if( newState == 3 )
\r
417 // current media is now playing
\r
420 else if( newState == 4 )
\r
422 // current media is now paused
\r
425 else if( newState == 5 )
\r
427 // current media has stopped
\r
430 else if( newState == 6 )
\r
432 // current media is playing forward
\r
435 else if( newState == 7 )
\r
437 // current media is playing backward
\r
440 else if( newState == 8 )
\r
442 // current media has ended
\r
445 else if( newState == 9 )
\r
447 // current media encountered error
\r
454 var vlc = getVLC("vlc");
\r
455 var newState = vlc.input.state;
\r
457 if( vlc.log.messages.count > 0 )
\r
459 // there is one or more messages in the log
\r
460 var iter = vlc.log.messages.iterator();
\r
461 while( iter.hasNext )
\r
463 var msg = iter.next();
\r
464 if( msg.severity == 1 )
\r
466 alert( msg.message );
\r
468 document.getElementById("message").innerHTML = msg.message;
\r
470 // clear the log once finished to avoid clogging
\r
471 vlc.log.messages.clear();
\r
474 if( prevState != newState )
\r
476 if( newState == 0 )
\r
478 // current media has stopped
481 else if( newState == 1 )
\r
483 // current media is openning/connecting
\r
486 else if( newState == 2 )
\r
488 // current media is buffering data
\r
491 else if( newState == 3 )
\r
493 // current media is now playing
\r
496 else if( newState == 4 )
\r
498 // current media is now paused
\r
501 else if( newState == 5 )
\r
503 // current media has stopped
\r
506 else if( newState == 6 )
\r
508 // current media is playing forward
\r
511 else if( newState == 7 )
\r
513 // current media is playing backward
\r
516 else if( newState == 8 )
\r
518 // current media has ended
\r
521 else if( newState == 9 )
\r
523 // current media encountered error
\r
526 prevState = newState;
\r
528 else if( newState == 3 )
\r
530 // current media is playing
\r
533 if( monitorTimerId == 0 )
\r
535 monitorTimerId = setInterval("monitor()", 1000);
\r
541 function doGo(targetURL)
\r
543 var vlc = getVLC("vlc");
\r
545 vlc.playlist.clear();
\r
546 while( vlc.playlist.itemCount > 0 )
\r
548 // clear() may return before the playlist has actually been cleared
\r
549 // just wait for it to finish its job
\r
551 //vlc.playlist.add(targetURL);
\r
552 //vlc.playlist.play();
\r
554 var itemId = vlc.playlist.add(targetURL);
\r
557 // clear the message log and enable error logging
\r
558 vlc.log.verbosity = 1;
\r
559 vlc.log.messages.clear();
\r
561 vlc.playlist.play();
\r
562 if( monitorTimerId == 0 )
\r
570 vlc.log.verbosity = -1;
\r
571 alert("cannot play at the moment !");
\r
575 if (rateTimerId != 0)
\r
577 clearInterval("ratechange()");
\r
582 function doAdd(targetURL)
\r
584 var vlc = getVLC("vlc");
\r
585 var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear");
\r
586 vlc.playlist.add(targetURL);
\r
590 function doPlayOrPause()
\r
592 var vlc = getVLC("vlc");
\r
593 if( vlc.playlist.isPlaying )
\r
595 vlc.playlist.togglePause();
\r
598 else if( vlc.playlist.itemCount > 0 )
\r
600 // clear the message log and enable error logging
\r
601 vlc.log.verbosity = 1;
\r
602 vlc.log.messages.clear();
\r
603 vlc.playlist.play();
\r
609 vlc.log.verbosity = -1;
\r
610 alert('nothing to play !');
\r
612 if (rateTimerId != 0)
\r
614 clearInterval("ratechange()");
\r
621 getVLC("vlc").playlist.stop();
\r
622 if( monitorTimerId != 0 )
\r
624 clearInterval(monitorTimerId);
\r
625 monitorTimerId = 0;
\r
630 function doPlaySlower()
\r
632 var vlc = getVLC("vlc");
\r
633 vlc.input.rate = vlc.input.rate / 2;
\r
636 function doPlayFaster()
\r
638 var vlc = getVLC("vlc");
\r
639 vlc.input.rate = vlc.input.rate * 2;
\r
646 document.getElementById("state").innerHTML = "Opening...";
\r
647 document.getElementById("PlayOrPause").value = "Pause";
\r
650 function onBuffer()
\r
652 document.getElementById("state").innerHTML = "Buffering...";
\r
653 document.getElementById("PlayOrPause").value = "Pause";
\r
658 document.getElementById("state").innerHTML = "Playing...";
\r
659 document.getElementById("PlayOrPause").value = "Pause";
\r
663 function onForward()
\r
664 { // Event is reserved for future enhancements
\r
665 document.getElementById("state").innerHTML = "Forward playing...";
\r
668 function onBackward()
\r
669 { // Event is reserved for future enhancements
\r
670 document.getElementById("state").innerHTML = "Backward playing...";
\r
675 document.getElementById("state").innerHTML = "End...";
\r
679 var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "(( Live ))");
\r
680 var liveFeedRoll = 0;
\r
682 function onPlaying()
\r
684 if( ! inputTrackerScrolling )
\r
686 var vlc = getVLC("vlc");
\r
687 var info = document.getElementById("info");
\r
688 var mediaLen = vlc.input.length;
\r
689 inputTrackerIgnoreChange = true;
\r
693 if( inputTracker.maxVal == 1.0 )
\r
695 inputTracker.setDisabled(false);
\r
696 inputTracker.maxVal = 1.0;
\r
698 inputTracker.setValue(vlc.input.position);
\r
699 info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen);
\r
703 // non-seekable "live" media
\r
704 if( inputTracker.maxVal != 0.0 )
\r
706 inputTracker.maxVal = 0.0;
\r
707 inputTracker.setValue(0.0);
\r
708 inputTracker.setDisabled(true);
\r
710 liveFeedRoll = liveFeedRoll & 3;
\r
711 info.innerHTML = liveFeedText[liveFeedRoll++];
\r
713 inputTrackerIgnoreChange = false;
\r
719 document.getElementById("state").innerHTML = "Paused...";
\r
720 document.getElementById("PlayOrPause").value = " Play ";
\r
726 vlc.log.verbosity = -1;
\r
728 if( !inputTracker.disabled )
730 inputTracker.setValue(inputTracker.minVal);
\r
731 inputTracker.setDisabled(true);
\r
733 document.getElementById("info").innerHTML = "-:--:--/-:--:--";
\r
734 document.getElementById("state").innerHTML = "Stopped...";
\r
735 document.getElementById("PlayOrPause").value = " Play ";
\r
740 var vlc = getVLC("vlc");
\r
742 document.getElementById("state").innerHTML = "Error...";
\r
743 if( vlc.log.messages.count > 0 )
\r
745 // there is one or more messages in the log
\r
746 var iter = vlc.log.messages.iterator();
\r
747 while( iter.hasNext )
\r
749 var msg = iter.next();
\r
750 if( msg.severity <= 1 )
\r
752 alert( msg.message );
\r
754 document.getElementById("message").innerHTML = msg.message;
\r
756 // clear the log once finished to avoid clogging
\r
757 vlc.log.messages.clear();
\r
761 function onInputTrackerScrollStart()
\r
763 inputTrackerScrolling = true;
\r
766 function onInputTrackerScrollEnd(inputTracker, value, pos)
\r
768 inputTrackerScrolling = false;
\r
771 function onInputTrackerChange(inputTracker, value, pos)
\r
773 if( ! inputTrackerIgnoreChange )
\r
775 var vlc = getVLC("vlc");
\r
776 if( (vlc.input.state == 3) && (vlc.input.position != value) )
\r
778 var info = document.getElementById("info");
\r
779 vlc.input.position = value;
\r
780 info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);
\r