<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <TITLE>VLC Plugin test page</TITLE> <STYLE> .inputTrackerInput { height:20; width:30; font-family : Arial, Helvetica, sans-serif; font-size : 12px; } </STYLE> <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/LibCrossBrowser.js"></SCRIPT> <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/lib/EventHandler.js"></SCRIPT> <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/core/form/Bs_FormUtil.lib.js"></SCRIPT> <SCRIPT type="text/javascript" src="blueshoes-4.5/javascript/components/slider/Bs_Slider.class.js"></SCRIPT> <SCRIPT language="JavaScript"><!-- function init(){ inputTracker = new Bs_Slider(); inputTracker.attachOnChange(onInputTrackerChange); inputTracker.attachOnSlideStart(onInputTrackerScrollStart); inputTracker.attachOnSlideEnd(onInputTrackerScrollEnd); inputTracker.width = 530 ; inputTracker.height = 15; inputTracker.minVal = 0; inputTracker.maxVal = 1.0; inputTracker.valueDefault = 0; inputTracker.valueInterval = 1/530; inputTracker.setDisabled(true); inputTracker.imgDir = 'blueshoes-4.5/javascript/components/slider/img/'; inputTracker.setBackgroundImage('aluminumalloyvolcanic/horizontal_background.gif', 'repeat'); inputTracker.setArrowIconLeft('aluminumalloyvolcanic/horizontal_backgroundLeft.gif', 2, 19); inputTracker.setArrowIconRight('aluminumalloyvolcanic/horizontal_backgroundRight.gif', 2, 19); inputTracker.setSliderIcon('aluminumalloyvolcanic/horizontal_knob.gif', 15, 19); inputTracker.useInputField = 0; inputTracker.draw('inputTrackerDiv'); if( navigator.appName.indexOf("Microsoft Internet")==-1 ) { onVLCPluginReady() } else if( document.readyState == 'complete' ) { onVLCPluginReady(); } else { /* Explorer loads plugins asynchronously */ document.onreadystatechange=function() { if( document.readyState == 'complete' ) { onVLCPluginReady(); } } } }; function getVLC(name) { if (window.document[name]) { return window.document[name]; } if (navigator.appName.indexOf("Microsoft Internet")==-1) { if (document.embeds && document.embeds[name]) return document.embeds[name]; } else // if (navigator.appName.indexOf("Microsoft Internet")!=-1) { return document.getElementById(name); } }; function onVLCPluginReady() { updateVolume(0); }; //--></SCRIPT> <BODY onLoad="init();"> <TABLE> <TR><TD colspan="2"> MRL: <INPUT size="90" id="targetTextField" value=""> <INPUT type=submit value="Go" onClick="doGo(document.getElementById('targetTextField').value);"> <INPUT type=submit value="Add" onClick="doAdd(document.getElementById('targetTextField').value);"> </TD></TR> <TR><TD align="center" colspan="2"> <!-- Insert VideoLAN.VLCPlugin.2 --> <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" width="640" height="480" id="vlc" events="True"> <param name="MRL" value="" /> <param name="ShowDisplay" value="True" /> <param name="AutoLoop" value="False" /> <param name="AutoPlay" value="False" /> <param name="Volume" value="50" /> <param name="StartTime" value="0" /> <EMBED pluginspage="http://www.videolan.org" type="application/x-vlc-plugin" version="VideoLAN.VLCPlugin.2" width="640" height="480" name="vlc"> </EMBED> </OBJECT> </TD></TR> <TR><TD colspan="2"> <TABLE><TR> <TD valign="top" width="550"> <!-- Insert Slider widget --> <DIV id="inputTrackerDiv"</DIV> </TD><TD width="15%"> <DIV id="info" style="text-align:center">-:--:--/-:--:--</DIV> <DIV id="state" style="text-align:center">Stopped...</DIV> </TD></TR></TABLE> </TD></TR> <TR><TD> <INPUT type=button id="PlayOrPause" value=" Play " onClick='doPlayOrPause();'> <INPUT type=button value="Stop" onClick='doStop();'> <INPUT type=button value=" << " onClick='doPlaySlower();'> <INPUT type=button value=" >> " onClick='doPlayFaster();'> <INPUT type=button value="Backward" onClick='doBackwardPlay(500);'> <INPUT type=button value="Forward" onClick='doForwardPlay(500);'> <INPUT type=button value="Fullscreen" onClick='getVLC("vlc").video.toggleFullscreen();'> <INPUT type=button value="Version" onClick='alert("vlc " + getVLC("vlc").VersionInfo);'> <INPUT type=button value=" State " onClick='doState();'> </TD><TD align="right"> <SPAN style="text-align:center">Volume:</SPAN> <INPUT type=button value=" - " onClick='updateVolume(-10)'> <SPAN id="volumeTextField" style="text-align:center">--</SPAN> <INPUT type=button value=" + " onClick='updateVolume(+10)'> <INPUT type=button value="Mute" onClick='getVLC("vlc").audio.toggleMute();'> </TD> </TR> <TR><TD>Playlist: <INPUT type=button value="Prev" onClick='getVLC("vlc").playlist.prev();'> <INPUT type=button value="Next" onClick='getVLC("vlc").playlist.next();'> <INPUT type=button value="Clear All" onClick='getVLC("vlc").playlist.clear(); doItemCount();'> <INPUT size=4 value="1:1" id="aspect"><INPUT type=submit value="AspectRatio" onClick="doAspectRatio(document.getElementById('aspect').value);"> </TD><TD align="right"> <INPUT type=button id="itemCount" value=" Items 0 " onClick='doItemCount();'> <INPUT size=4 value="" id="removeid"><INPUT type=submit value="Delete" onClick="doRemoveItem(document.getElementById('removeid').value);"> </TD> </TR> <TR><TD>Messages: <INPUT type=button value="Messages" onClick='doMessages();'> Verbosity: <INPUT size=2 value="1" id="verbosity" onClick="doVerbosity(document.getElementById('verbosity').value);"> <INPUT type=button value=" + " onClick='doVerbosity(1);'> <INPUT type=button value=" - " onClick='doVerbosity(-1);'> </TD> <TD> <DIV id="message" style="text-align:center">no message</DIV> </TD> </TR> <TR><TD>Audio Channel: <SELECT readonly onClick='doAudioChannel(this.value);'> <OPTION value=1>Stereo</OPTION> <OPTION value=2>Reverse Stereo</OPTION> <OPTION value=3>Left</OPTION> <OPTION value=4>Right</OPTION> <OPTION value=5>Dolby</OPTION> </SELECT> </TD> <TD> <INPUT type=button value="current channel" onClick='alert(getVLC("vlc").audio.channel);'> </TD> </TR> <TR><TD> Audio Track: <INPUT type=button value=" + " onClick='doAudioTrack(1);'> <SPAN id="trackTextField" style="text-align:center">--</SPAN> <INPUT type=button value=" - " onClick='doAudioTrack(-1);'> </TD> <TD> <INPUT type=button value="set slider" onClick='doSetSlider();'> <INPUT type=button value="get position" onClick='doGetPosition();'> </TD> </TR> </TABLE> <SCRIPT language="javascript"> <!-- var rate = 0; var prevState = 0; var monitorTimerId = 0; var rateTimerId = 0; var inputTrackerScrolling = false; var inputTrackerIgnoreChange = false; function doSetSlider() { var vlc = getVLC("vlc"); if (vlc.input) { // set slider to new position vlc.input.time = (vlc.input.length/2); } }; function doGetPosition() { var vlc = getVLC("vlc"); if (vlc.input) { // set slider to new position alert( "position is " + vlc.input.time); } }; function doForwardPlay(speed) { if (rateTimerId == 0) { rateTimerId = setInterval("ratechange()", speed); rate = speed; } else rate = rate + speed; }; function doBackwardPlay(speed) { if (rateTimerId == 0) { rateTimerId = setInterval("ratechange()", speed); rate = -speed; } else rate = rate - speed; }; function ratechange() { if (rateTimerId != 0) { var vlc = getVLC("vlc"); vlc.input.time = vlc.input.time + rate; } }; function doVerbosity(value) { var vlc = getVLC("vlc"); vlc.log.verbosity = vlc.log.verbosity + value; document.getElementById("verbosity").value = vlc.log.verbosity; }; function doAudioChannel(value) { var vlc = getVLC("vlc"); vlc.audio.channel = parseInt(value); }; function doAudioTrack(value) { var vlc = getVLC("vlc"); vlc.audio.track = vlc.audio.track + value; document.getElementById("trackTextField").innerHTML = vlc.audio.track; }; function doAspectRatio(value) { var vlc = getVLC("vlc"); vlc.video.aspectRatio = value; document.getElementById("aspect").value = vlc.video.aspectRatio; } function doItemCount() { var vlc = getVLC("vlc"); var count = vlc.playlist.itemCount; document.getElementById("itemCount").value = " Items " + count + " "; }; function doRemoveItem(item) { var vlc = getVLC("vlc"); vlc.playlist.removeItem(item); }; function doMessages() { var vlc = getVLC("vlc"); if( vlc.log.messages.count > 0 ) { // there is one or more messages in the log var iter = vlc.log.messages.iterator(); while( iter.hasNext ) { var msg = iter.next(); if( msg.severity <= 1 ) { document.getElementById("message").innerHTML = msg.message; } } // clear the log once finished to avoid clogging vlc.log.messages.clear(); } }; function updateVolume(deltaVol) { var vlc = getVLC("vlc"); vlc.audio.volume += deltaVol; document.getElementById("volumeTextField").innerHTML = vlc.audio.volume+"%"; }; function formatTime(timeVal) { var timeHour = Math.round(timeVal / 1000); var timeSec = timeHour % 60; if( timeSec < 10 ) timeSec = '0'+timeSec; timeHour = (timeHour - timeSec)/60; var timeMin = timeHour % 60; if( timeMin < 10 ) timeMin = '0'+timeMin; timeHour = (timeHour - timeMin)/60; if( timeHour > 0 ) return timeHour+":"+timeMin+":"+timeSec; else return timeMin+":"+timeSec; }; function doState() { var vlc = getVLC("vlc"); var newState = vlc.input.state; if( newState == 0 ) { // current media has stopped onEnd(); } else if( newState == 1 ) { // current media is openning/connecting onOpen(); } else if( newState == 2 ) { // current media is buffering data onBuffer(); } else if( newState == 3 ) { // current media is now playing onPlay(); } else if( newState == 4 ) { // current media is now paused onPause(); } else if( newState == 5 ) { // current media has stopped onStop(); } else if( newState == 6 ) { // current media is playing forward onForward(); } else if( newState == 7 ) { // current media is playing backward onBackward(); } else if( newState == 8 ) { // current media has ended onEnd(); } else if( newState == 9 ) { // current media encountered error onError(); } }; function monitor() { var vlc = getVLC("vlc"); var newState = vlc.input.state; if( vlc.log.messages.count > 0 ) { // there is one or more messages in the log var iter = vlc.log.messages.iterator(); while( iter.hasNext ) { var msg = iter.next(); if( msg.severity == 1 ) { alert( msg.message ); } document.getElementById("message").innerHTML = msg.message; } // clear the log once finished to avoid clogging vlc.log.messages.clear(); } if( prevState != newState ) { if( newState == 0 ) { // current media has stopped onEnd(); } else if( newState == 1 ) { // current media is openning/connecting onOpen(); } else if( newState == 2 ) { // current media is buffering data onBuffer(); } else if( newState == 3 ) { // current media is now playing onPlay(); } else if( newState == 4 ) { // current media is now paused onPause(); } else if( newState == 5 ) { // current media has stopped onStop(); } else if( newState == 6 ) { // current media is playing forward onForward(); } else if( newState == 7 ) { // current media is playing backward onBackward(); } else if( newState == 8 ) { // current media has ended onEnd(); } else if( newState == 9 ) { // current media encountered error onError(); } prevState = newState; } else if( newState == 3 ) { // current media is playing onPlaying(); } if( monitorTimerId == 0 ) { monitorTimerId = setInterval("monitor()", 1000); } }; /* actions */ function doGo(targetURL) { var vlc = getVLC("vlc"); vlc.playlist.clear(); while( vlc.playlist.itemCount > 0 ) { // clear() may return before the playlist has actually been cleared // just wait for it to finish its job } //vlc.playlist.add(targetURL); //vlc.playlist.play(); var itemId = vlc.playlist.add(targetURL); if( itemId != -1 ) { // clear the message log and enable error logging vlc.log.verbosity = 1; vlc.log.messages.clear(); // play MRL vlc.playlist.play(); if( monitorTimerId == 0 ) { monitor(); } } else { // disable log vlc.log.verbosity = -1; alert("cannot play at the moment !"); } doItemCount(); if (rateTimerId != 0) { clearInterval("ratechange()"); } rateTimerId = 0; }; function doAdd(targetURL) { var vlc = getVLC("vlc"); var options = new Array(":vout-filter=deinterlace", ":deinterlace-mode=linear"); vlc.playlist.add(targetURL); doItemCount(); }; function doPlayOrPause() { var vlc = getVLC("vlc"); if( vlc.playlist.isPlaying ) { vlc.playlist.togglePause(); monitor(); } else if( vlc.playlist.itemCount > 0 ) { // clear the message log and enable error logging vlc.log.verbosity = 1; vlc.log.messages.clear(); vlc.playlist.play(); monitor(); } else { // disable log vlc.log.verbosity = -1; alert('nothing to play !'); } if (rateTimerId != 0) { clearInterval("ratechange()"); } rateTimerId = 0; }; function doStop() { getVLC("vlc").playlist.stop(); if( monitorTimerId != 0 ) { clearInterval(monitorTimerId); monitorTimerId = 0; } onStop(); }; function doPlaySlower() { var vlc = getVLC("vlc"); vlc.input.rate = vlc.input.rate / 2; }; function doPlayFaster() { var vlc = getVLC("vlc"); vlc.input.rate = vlc.input.rate * 2; }; /* events */ function onOpen() { document.getElementById("state").innerHTML = "Opening..."; document.getElementById("PlayOrPause").value = "Pause"; }; function onBuffer() { document.getElementById("state").innerHTML = "Buffering..."; document.getElementById("PlayOrPause").value = "Pause"; }; function onPlay() { document.getElementById("state").innerHTML = "Playing..."; document.getElementById("PlayOrPause").value = "Pause"; onPlaying(); }; function onForward() { // Event is reserved for future enhancements document.getElementById("state").innerHTML = "Forward playing..."; }; function onBackward() { // Event is reserved for future enhancements document.getElementById("state").innerHTML = "Backward playing..."; }; function onEnd() { document.getElementById("state").innerHTML = "End..."; }; var liveFeedText = new Array("Live", "((Live))", "(( Live ))", "(( Live ))"); var liveFeedRoll = 0; function onPlaying() { if( ! inputTrackerScrolling ) { var vlc = getVLC("vlc"); var info = document.getElementById("info"); var mediaLen = vlc.input.length; inputTrackerIgnoreChange = true; if( mediaLen > 0 ) { // seekable media if( inputTracker.maxVal == 1.0 ) { inputTracker.setDisabled(false); inputTracker.maxVal = 1.0; } inputTracker.setValue(vlc.input.position); info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(mediaLen); } else { // non-seekable "live" media if( inputTracker.maxVal != 0.0 ) { inputTracker.maxVal = 0.0; inputTracker.setValue(0.0); inputTracker.setDisabled(true); } liveFeedRoll = liveFeedRoll & 3; info.innerHTML = liveFeedText[liveFeedRoll++]; } inputTrackerIgnoreChange = false; } }; function onPause() { document.getElementById("state").innerHTML = "Paused..."; document.getElementById("PlayOrPause").value = " Play "; }; function onStop() { // disable logging vlc.log.verbosity = -1; if( ! inputTracker.disabled ) { inputTracker.setValue(inputTracker.minVal); inputTracker.setDisabled(true); } document.getElementById("info").innerHTML = "-:--:--/-:--:--"; document.getElementById("state").innerHTML = "Stopped..."; document.getElementById("PlayOrPause").value = " Play "; }; function onError() { var vlc = getVLC("vlc"); document.getElementById("state").innerHTML = "Error..."; if( vlc.log.messages.count > 0 ) { // there is one or more messages in the log var iter = vlc.log.messages.iterator(); while( iter.hasNext ) { var msg = iter.next(); if( msg.severity <= 1 ) { alert( msg.message ); } document.getElementById("message").innerHTML = msg.message; } // clear the log once finished to avoid clogging vlc.log.messages.clear(); } }; function onInputTrackerScrollStart() { inputTrackerScrolling = true; }; function onInputTrackerScrollEnd(inputTracker, value, pos) { inputTrackerScrolling = false; }; function onInputTrackerChange(inputTracker, value, pos) { if( ! inputTrackerIgnoreChange ) { var vlc = getVLC("vlc"); if( (vlc.input.state == 3) && (vlc.input.position != value) ) { var info = document.getElementById("info"); vlc.input.position = value; info.innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length); } } }; //--> </SCRIPT> </BODY> </HTML>