1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
3 < index.html: VLC media player web interface - VLM
4 < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
5 < Copyright (C) 2005-2014 VLC authors and VideoLAN
8 < Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
10 < This program is free software; you can redistribute it and/or modify
11 < it under the terms of the GNU General Public License as published by
12 < the Free Software Foundation; either version 2 of the License, or
13 < (at your option) any later version.
15 < This program is distributed in the hope that it will be useful,
16 < but WITHOUT ANY WARRANTY; without even the implied warranty of
17 < MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 < GNU General Public License for more details.
20 < You should have received a copy of the GNU General Public License
21 < along with this program; if not, write to the Free Software
22 < Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
26 <title><?vlc gettext(
"VLC media player - Web Interface")
?></title>
27 <meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8" />
28 <link href=
"favicon.ico" type=
"image/x-icon" rel=
"shortcut icon" />
29 <script type=
"text/javascript" src=
"js/common.js"></script>
30 <script type=
"text/javascript">
33 window
.location
='mobile.html';
37 <link type=
"text/css" href=
"css/ui-lightness/jquery-ui-1.8.13.custom.css" rel=
"stylesheet" />
38 <link type=
"text/css" href=
"css/main.css" rel=
"stylesheet" />
39 <script type=
"text/javascript" src=
"http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
40 <script type=
"text/javascript" src=
"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
41 <script type=
"text/javascript" src=
"js/jquery.jstree.js"></script>
42 <script type=
"text/javascript" src=
"js/ui.js"></script>
43 <script type=
"text/javascript" src=
"js/controllers.js"></script>
44 <script type=
"text/javascript">
46 var pollStatus
= true;
48 $('.button').hover(function(){$(this).addClass('ui-state-hover')},function(){$(this).removeClass('ui-state-hover')});
49 $('#buttonPlayList').click(function(){
50 $('#libraryContainer').animate({
53 $('#buttonszone1').animate({
58 $('#buttonViewer').click(function(){
59 $('#viewContainer').animate({
64 $('#buttonEqualizer').click(function(){
66 $('#window_equalizer').dialog('open');
69 $('#buttonOffsets').click(function(){
70 $('#window_offset').dialog('open');
73 $('#buttonBatch').click(function(){
74 $('#window_batch').dialog('open');
77 $('#buttonOpen').click(function(){
78 browse_target
= 'default';
80 $('#window_browse').dialog('open');
83 $('#buttonPrev').mousedown(function(){
89 $('#buttonPrev').mouseup(function(){
91 sendCommand({'command':'pl_previous'});
96 $('#buttonNext').mousedown(function(){
102 $('#buttonNext').mouseup(function(){
104 sendCommand({'command':'pl_next'});
109 $('#buttonPlEmpty').click(function(){
110 sendCommand({'command':'pl_empty'})
111 updatePlayList(true);
114 $('#buttonLoop').click(function(){
115 sendCommand({'command':'pl_loop'});
118 $('#buttonRepeat').click(function(){
119 sendCommand({'command':'pl_repeat'});
122 $('#buttonShuffle').click(function(){
123 sendCommand({'command':'pl_random'});
126 $('#buttonRefresh').click(function(){
127 updatePlayList(true);
130 $('#buttonPlPlay').click(function(){
132 'command': 'pl_play',
133 'id':$('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5)
137 $('#buttonPlAdd').click(function(){
138 $('.jstree-clicked','#libraryTree').each(function(){
139 if($(this).parents().first().attr('uri')){
141 'command':'in_enqueue',
142 'input' : $(this).parents().first().attr('uri')
146 $('#libraryTree').jstree('deselect_all');
147 setTimeout(function(){updatePlayList(true);},1000);
150 $('#buttonStreams, #buttonStreams2').click(function(){
152 $('#window_streams').dialog('open');
154 $('#buttonSout').click(function(){
155 if(current_que
=='main'){
156 $('#windowStreamConfirm').dialog('open');
158 $('#player').empty();
159 current_que
= 'main';
160 sendVLMCmd('del Current');
165 $('#windowStreamConfirm').dialog({
170 "<?vlc gettext("Yes
") ?>":function(){
171 var file
= $('[current="current"]','#libraryTree').length
>0 ? $('[current="current"]','#libraryTree').first().attr('uri') : ($('.jstree-clicked','#libraryTree').length
>0 ? $('.jstree-clicked','#libraryTree').first().parents().first().attr('uri') : ($('#plid_'+current_id
).attr('uri') ? $('#plid_'+current_id
).attr('uri') : false));
173 if($('#viewContainer').css('display')=='none'){
174 $('#buttonViewer').click();
176 var defaultStream
= 'new Current broadcast enabled input "'+file
+'" output #transcode{vcodec=FLV1,vb=4096,fps=25,scale=1,acodec=mp3,ab=512,samplerate=44100,channels=2}:std{access='+$('#stream_protocol').val()+',mux=avformat{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
177 sendVLMCmd('del Current;'+defaultStream
+';control Current play');
178 $('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
179 current_que
= 'stream';
182 $(this).dialog('close');
184 "<?vlc gettext("No
") ?>":function(){
185 $(this).dialog('close');
189 $('#viewContainer').animate({height
: 'toggle'});
191 /* delay script loading so we won't block if we have no net access */
192 $.getScript('http://releases.flowplayer.org/js/flowplayer-3.2.6.min.js', function(data
, textStatus
){
193 $('#player').empty();
194 flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
195 /* .getScript only handles success() */
200 <body id=
"regular_layout">
201 <div class=
"centered">
202 <div id=
"mainContainer" class=
"centered">
203 <div id=
"controlContainer" class=
"ui-widget">
204 <div id=
"controlTable" class=
"ui-widget-content">
205 <ul id=
"controlButtons">
206 <li id=
"buttonPrev" class=
"button48 ui-corner-all" title=
"<?vlc gettext("Previous
") ?>"></li>
207 <li id=
"buttonPlay" class=
"button48 ui-corner-all paused" title=
"<?vlc gettext("Play
") ?>"></li>
208 <li id=
"buttonNext" class=
"button48 ui-corner-all" title=
"<?vlc gettext("Next
") ?>"></li>
209 <li id=
"buttonOpen" class=
"button48 ui-corner-all" title=
"<?vlc gettext("Open Media
") ?>"></li>
210 <li id=
"buttonStop" class=
"button48 ui-corner-all" title=
"<?vlc gettext("Stop
") ?>"></li>
211 <li id=
"buttonFull" class=
"button48 ui-corner-all" title=
"<?vlc gettext("Full Screen
") ?>"></li>
212 <li id=
"buttonSout" class=
"button48 ui-corner-all" title=
"<?vlc gettext("Easy Stream
") ?>"></li>
214 <ul id=
"buttonszone2" class=
"buttonszone">
215 <li id=
"buttonPlayList" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Hide / Show Library
") ?>"><span class=
"ui-icon ui-icon-note"></span><?vlc gettext(
"Hide / Show Library")
?></li>
216 <li id=
"buttonViewer" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Hide / Show Viewer
") ?>"><span class=
"ui-icon ui-icon-video"></span><?vlc gettext(
"Hide / Show Viewer")
?></li>
217 <li id=
"buttonStreams" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Manage Streams
") ?>"><span class=
"ui-icon ui-icon-script"></span><?vlc gettext(
"Manage Streams")
?></li>
218 <li id=
"buttonOffsets" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Track Synchronisation
") ?>"><span class=
"ui-icon ui-icon-transfer-e-w"></span><?vlc gettext(
"Track Synchronisation")
?></li>
219 <li id=
"buttonEqualizer" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Equalizer
") ?>"><span class=
"ui-icon ui-icon-signal"></span><?vlc gettext(
"Equalizer")
?></li>
220 <li id=
"buttonBatch" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("VLM Batch Commands
") ?>"><span class=
"ui-icon ui-icon-suitcase"></span><?vlc gettext(
"VLM Batch Commands")
?></li>
222 <div id=
"volumesliderzone">
223 <div id=
"volumeSlider" title=
"Volume"><img src=
"images/speaker-32.png" class=
"ui-slider-handle" alt=
"volume"/></div>
224 <div id=
"currentVolume" class=
"dynamic">50%
</div>
227 <img id=
"albumArt" src=
"/art" width=
"141px" height=
"130px" alt=
"Album Art"/>
229 <div id=
"mediaTitle" class=
"dynamic"></div>
230 <div id=
"seekContainer">
231 <div id=
"seekSlider" title=
"<?vlc gettext("Seek Time
") ?>"></div>
232 <div id=
"currentTime" class=
"dynamic">00:
00:
00</div>
233 <div id=
"totalTime" class=
"dynamic">00:
00:
00</div>
237 <div id=
"libraryContainer" class=
"ui-widget">
238 <ul id=
"buttonszone1" align=
"left" class=
"buttonszone ui-widget-content" style=
"overflow:hidden; white-space: nowrap;">
239 <li id=
"buttonShuffle" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Shuffle
") ?>"><span class=
"ui-icon ui-icon-shuffle"></span><?vlc gettext(
"Shuffle")
?></li>
240 <li id=
"buttonLoop" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Loop
") ?>"><span class=
"ui-icon ui-icon-refresh"></span><?vlc gettext(
"Loop")
?></li>
241 <li id=
"buttonRepeat" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Repeat
") ?>"><span class=
"ui-icon ui-icon-arrowreturnthick-1-w"></span><?vlc gettext(
"Repeat")
?></li>
242 <li id=
"buttonPlEmpty" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Empty Playlist
") ?>"><span class=
"ui-icon ui-icon-trash"></span><?vlc gettext(
"Empty Playlist")
?></li>
243 <li id=
"buttonPlAdd" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Queue Selected
") ?>"><span class=
"ui-icon ui-icon-plus"></span><?vlc gettext(
"Queue Selected")
?></li>
244 <li id=
"buttonPlPlay" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Play Selected
") ?>"><span class=
"ui-icon ui-icon-play"></span><?vlc gettext(
"Play Selected")
?></li>
245 <li id=
"buttonRefresh" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Refresh List
") ?>"><span class=
"ui-icon ui-icon-arrowrefresh-1-n"></span><?vlc gettext(
"Refresh List")
?></li>
247 <div id=
"libraryTree" class=
"ui-widget-content"></div>
249 <div id=
"viewContainer" class=
"ui-widget">
250 <div id=
"mediaViewer" class=
"ui-widget-content">
251 <div href=
"http://localhost:8081/stream.flv" style=
"display:block; width:100%" id=
"player">
252 <p><?vlc gettext(
"Loading flowplayer...")
?><br/><?vlc gettext(
"If nothing appears, check your internet connection.")
?></p>
257 VLC
<?vlc print(vlc.misc.version() .. ' - Lua Web Interface -
<a id=
"mobileintflink" href=
"/mobile.html">Mobile Interface
</a> - ' .. vlc.misc.copyright())
?>
261 <div id=
"windowStreamConfirm" title=
"Confirm Stream Settings">
263 <?vlc gettext(
"By creating a stream, the <i>Main Controls</i> will operate the stream instead of the main interface.")
?>
264 <?vlc gettext(
"The stream will be created using default settings, for more advanced configuration, or to modify the default settings, select the button to the right: <i>Manage Streams</i>")
?>
265 <span id=
"buttonStreams2" class=
"button ui-widget ui-state-default ui-corner-all" title=
"<?vlc gettext("Manage Streams
") ?>"><span class=
"ui-icon ui-icon-script"></span></span>
268 <?vlc gettext(
"Once the stream is created, the <i>Media Viewer</i> window will display the stream.")
?>
269 <?vlc gettext(
"Volume will be controlled by the player, and not the <i>Main Controls</i>.")
?>
272 <?vlc gettext(
"The current playing item will be streamed. If there is no currently playing item, the first selected item from the <i>Library</i> will be the subject of the stream.")
?>
275 <?vlc gettext(
"To stop the stream and resume normal controls, click the <i>Open Stream</i> button again.")
?>
278 <?vlc gettext(
"Are you sure you wish to create the stream?")
?>
282 current_page =
"index"
284 dialogs(
"browse_window.html",
"stream_window.html",
"create_stream.html",
"offset_window.html",
"mosaic_window.html",
"equalizer_window.html",
"batch_window.html",
"error_window.html");