1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
4 < index.html: VLC media player web interface
5 < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
6 < Copyright (C) 2005 the VideoLAN team
9 < Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
11 < This program is free software; you can redistribute it and/or modify
12 < it under the terms of the GNU General Public License as published by
13 < the Free Software Foundation; either version 2 of the License, or
14 < (at your option) any later version.
16 < This program is distributed in the hope that it will be useful,
17 < but WITHOUT ANY WARRANTY; without even the implied warranty of
18 < MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 < GNU General Public License for more details.
21 < You should have received a copy of the GNU General Public License
22 < along with this program; if not, write to the Free Software
23 < Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
24 < - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
26 <html xmlns="http://www.w3.org/1999/xhtml">
30 <title>VLC media player - Web Interface</title>
31 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
32 <link href="style.css" rel="stylesheet" type="text/css" />
33 <script type="text/javascript" src="functions.js"></script>
35 <!-- in case people had scripts that sent commands to the default
37 <vlc id="control" param1="stop,pause,previous,next,add,sout,play,delete,empty,seek,fullscreen,keep,volume,sort,move" />
41 <body onload="loop_refresh();">
43 <div id="browse" style="display: none;">
48 <a href="javascript:browse_dir(document.getElementById( 'browse_lastdir' ).value);">Lets browse !</a>
50 <div class="controls">
51 <button id="btn_browse_close" onclick="hide('browse');">
54 <input type="hidden" id="browse_lastdir" value="~" />
55 <input type="hidden" id="browse_dest" value="" />
62 <button id="btn_toggle_text" onclick="toggle_btn_text();">
63 <img src="images/help.png" alt="Help" />
67 <div class="controls">
68 <button id="btn_open" onclick="toggle_show('input');" onmouseover="button_over(this);" onmouseout="button_out(this);">
69 <img src="images/eject.png" alt="Open" />
70 <span class="btn_text">Open</span>
73 <button id="btn_stop" onclick="pl_stop();" onmouseover="button_over(this);" onmouseout="button_out(this);">
74 <img src="images/stop.png" alt="Stop" />
75 <span class="btn_text">Stop</span>
77 <!--<button id="btn_play" onclick="alert('FIXME');" onmouseover="button_over(this);" onmouseout="button_out(this);">
78 <img src="images/play.png" alt="Play" />
79 <span class="btn_text">Play</span>
81 <button id="btn_pause" onclick="pl_pause();" onmouseover="button_over(this);" onmouseout="button_out(this);">
82 <img src="images/pause.png" alt="Pause" id="btn_pause_img" />
83 <span class="btn_text">Pause</span>
86 <button id="btn_previous" onclick="pl_previous();" onmouseover="button_over(this);" onmouseout="button_out(this);">
87 <img src="images/prev.png" alt="Previous" />
88 <span class="btn_text">Previous</span>
90 <button id="btn_next" onclick="pl_next();" onmouseover="button_over(this);" onmouseout="button_out(this);">
91 <img src="images/next.png" alt="Next" />
92 <span class="btn_text">Next</span>
95 <button id="btn_sout" onclick="toggle_show('sout');" onmouseover="button_over(this);" onmouseout="button_out(this);">
96 <img src="images/sout.png" alt="Stream Output" />
97 <span class="btn_text">Stream Output</span>
99 <button id="btn_playlist" onclick="toggle_show('playlist');" onmouseover="button_over(this);" onmouseout="button_out(this);">
100 <img src="images/playlist.png" alt="Playlist" />
101 <span class="btn_text">Playlist</span>
104 <button id="btn_fullscreen" onclick="fullscreen();" onmouseover="button_over(this);" onmouseout="button_out(this);">
105 <img src="images/fullscreen.png" alt="Fullscreen" />
106 <span class="btn_text">Fullscreen</span>
109 <button id="btn_volume_down" onclick="volume_down();" onmouseover="button_over(this);" onmouseout="button_out(this);">
110 <img src="images/volume_down.png" alt="Decrease Volume" />
111 <span class="btn_text">Decrease Volume</span>
113 <button id="btn_volume_up" onclick="volume_up();" onmouseover="button_over(this);" onmouseout="button_out(this);">
114 <img src="images/volume_up.png" alt="Increase Volume" />
115 <span class="btn_text">Increase Volume</span>
119 <span id="state">(?)</span>
121 Time : <span id="time">(?)</span>/<span id="length">(?)</span>
123 Volume : <span id="volume">(?)</span>
125 <span id="nowplaying">(?)</span>
129 <div id="input" style="display: none">
133 <div class="controls">
134 <label for="input_mrl">Input (MRL)</label>
135 <input type="text" name="input_mrl" id="input_mrl" size="60" onkeypress="if( event.keyCode == 13 ) in_play();"/>
136 <input type="button" value="Play" onclick="in_play();" />
137 <input type="button" value="Enqueue" onclick="in_enqueue();" />
139 <!--<button id="btn_inhide" onclick="hide_input();">
142 <button id="btn_file" onclick="hide_input();show('input_file');update_input_file();">
145 <button id="btn_disc" onclick="hide_input();show('input_disc');update_input_disc();">
148 <button id="btn_network" onclick="hide_input();show('input_network');update_input_net();">
152 <div id="input_helper">
153 <div id="input_file" style="display: block">
156 <label for="input_file_filename">File name</label>
157 <input type="text" id="input_file_filename" size="60" onchange="update_input_file();" onfocus="update_input_file();"/>
158 <input type="button" id="input_file_browse" value="Browse" onclick="browse( 'input_file_filename' );" />
160 <input type="checkbox" id="input_sub_options" />
161 <label for="input_sub_options">Subtitle options *TODO/FIXME/FIXHTTPD*</label>
163 <label for="input_sub_file">Subtitles file</label>
164 <input type="text" id="input_sub_file" size="60" />
166 <label for="input_sub_enc">Subtitles encoding</label>
167 <select id="input_sub_enc">
171 <label for="input_sub_size">Font size</label>
172 <select id="input_sub_size">
175 <label for="input_sub_justification">Justification</label>
176 <select id="input_sub_justification">
180 <label for="input_sub_fps">Frames per second</label>
181 <input type="text" id="input_sub_fps" />
182 <label for="input_sub_delay">Delay</label>
183 <input type="text" id="input_sub_delay" />
185 <div id="input_disc" style="display: none">
189 <input type="radio" name="input_disc_type" id="input_disc_dvdmenu" value="dvd" onchange="update_input_disc();" />
190 <label for="input_disc_dvdmenu">DVD (menus)</label>
191 <input type="radio" name="input_disc_type" id="input_disc_dvd" value="dvdsimple" onchange="update_input_disc();" />
192 <label for="input_disc_dvd">DVD</label>
193 <input type="radio" name="input_disc_type" id="input_disc_vcd" value="vcd" onchange="update_input_disc();" />
194 <label for="input_disc_vcd">VCD</label>
195 <input type="radio" name="input_disc_type" id="input_disc_cdda" value="cdda" onchange="update_input_disc();" />
196 <label for="input_disc_cdda">Audio CD</label>
201 <label for="input_disc_dev">Device name</label>
204 <input type="text" id="input_disc_dev" onchange="update_input_disc();" />
209 <label for="input_disc_title">Title</label>
212 <input type="text" id="input_disc_title" onchange="update_input_disc();" />
217 <label for="input_disc_chapter">Chapter</label>
220 <input type="text" id="input_disc_chapter" onchange="update_input_disc();" />
225 <label for="input_disc_subtrack">Subtitles track</label>
228 <input type="text" id="input_disc_subtrack" onchange="update_input_disc();" />
233 <label for="input_disc_audiotrack">Audio track</label>
236 <input type="text" id="input_disc_audiotrack" onchange="update_input_disc();" />
241 <div id="input_network" style="display: none">
247 <input type="radio" name="input_net_type" id="input_net_udp" value="udp" onchange="update_input_net();" />
248 <label for="input_net_udp">UDP/RTP</label>
251 <label for="input_net_udp_port">Port</label>
252 <input type="text" id="input_net_udp_port" size="6" onchange="update_input_net();" />
253 <input type="checkbox" id="input_net_udp_forceipv6" onchange="update_input_net();" />
254 <label for="input_net_udp_forceipv6">Force IPv6</label>
259 <input type="radio" name="input_net_type" id="input_net_udpmcast" value="udpmcast" onchange="update_input_net();" />
260 <label for="input_net_udpmcast">UDP/RTP Multicast</label>
263 <label for="input_net_udpmcast_address">Address</label>
264 <input type="text" id="input_net_udpmcast_address" onchange="update_input_net();" />
265 <label for="input_net_udpmcast_port">Port</label>
266 <input type="text" id="input_net_udpmcast_port" size="6" onchange="update_input_net();" />
271 <input type="radio" name="input_net_type" id="input_net_http" value="http" onchange="update_input_net();" />
272 <label for="input_net_http">HTTP/HTTPS/FTP/MMS</label>
275 <label for="input_net_http_url">URL</label>
276 <input type="text" id="input_net_http_url" onchange="update_input_net();" />
281 <input type="radio" name="input_net_type" id="input_net_rtsp" value="rtsp" onchange="update_input_net();" />
282 <label for="input_net_rtsp">RTSP</label>
285 <label for="input_net_rtsp_url">URL</label>
286 <input type="text" id="input_net_rtsp_url" value="rtsp://" onchange="update_input_net();" />
291 <input type="checkbox" id="input_net_timeshift" onchange="update_input_net();" />
292 <label for="input_net_timeshift">Allow timeshifting</label>
301 <div id="sout" style="display: none">
305 <div class="controls">
306 <label for="sout_mrl">Destination (MRL)</label>
307 <input type="text" name="sout_mrl" id="sout_mrl" size="60" />
309 <input type="submit" value="Save" onclick="save_sout();" />
310 <input type="button" value="Cancel" onclick="reset_sout();"/>
311 <input type="hidden" id="sout_old_mrl" value="" /> <!-- FIXME -->
312 <input type="button" id="sout_helper_toggle" onclick="toggle_show_sout_helper()" value="Full sout interface" />
314 <div id="sout_helper" style="display: none;" >
317 <div id="sout_method">
321 <input type="checkbox" id="sout_display" onchange="update_sout()"/>
322 <label for="sout_display">Display</label>
329 <input type="checkbox" id="sout_file" onchange="update_sout()"/>
330 <label for="sout_file">File</label>
333 <label for="sout_file_filename">File name</label>
334 <input type="text" id="sout_file_filename" onchange="update_sout()"/>
340 <input type="checkbox" id="sout_http" onchange="update_sout()"/>
341 <label for="sout_http">HTTP</label>
344 <label for="sout_http_addr">Address</label>
345 <input type="text" id="sout_http_addr" onchange="update_sout()"/>
348 <label for="sout_http_port">Port</label>
349 <input type="text" id="sout_http_port" onchange="update_sout()"/>
354 <input type="checkbox" id="sout_mmsh" onchange="update_sout()"/>
355 <label for="sout_mmsh">MMSH</label>
358 <label for="sout_mmsh_addr">Address</label>
359 <input type="text" id="sout_mmsh_addr" onchange="update_sout()"/>
362 <label for="sout_mmsh_port">Port</label>
363 <input type="text" id="sout_mmsh_port" onchange="update_sout()"/>
368 <input type="checkbox" id="sout_rtp" onchange="update_sout()"/>
369 <label for="sout_rtp">RTP</label>
372 <label for="sout_rtp_addr">Address</label>
373 <input type="text" id="sout_rtp_addr" onchange="update_sout()"/>
376 <label for="sout_rtp_port">Port</label>
377 <input type="text" id="sout_rtp_port" onchange="update_sout()"/>
382 <input type="checkbox" id="sout_udp" onchange="update_sout()"/>
383 <label for="sout_udp">UDP</label>
386 <label for="sout_udp_addr">Address</label>
387 <input type="text" id="sout_udp_addr" onchange="update_sout()"/>
390 <label for="sout_udp_port">Port</label>
391 <input type="text" id="sout_udp_port" onchange="update_sout()"/>
398 <input type="radio" name="sout_mux" id="sout_mux_default" value="" onchange="update_sout()" />
399 <label for="sout_mux_default">Default</label>
400 <input type="radio" name="sout_mux" id="sout_mux_ts" value="ts" onchange="update_sout()"/>
401 <label for="sout_mux_ts">MPEG TS</label>
402 <input type="radio" name="sout_mux" id="sout_mux_ps" value="ps" onchange="update_sout()"/>
403 <label for="sout_mux_ps">MPEG PS</label>
404 <input type="radio" name="sout_mux" id="sout_mux_mpeg1" value="mpeg1" onchange="update_sout()"/>
405 <label for="sout_mux_ts">MPEG 1</label>
406 <input type="radio" name="sout_mux" id="sout_mux_ogg" value="ogg" onchange="update_sout()"/>
407 <label for="sout_mux_ts">OGG</label>
409 <input type="radio" name="sout_mux" id="sout_mux_asf" value="asf" onchange="update_sout()"/>
410 <label for="sout_mux_ts">ASF</label>
411 <input type="radio" name="sout_mux" id="sout_mux_mp4" value="mp4" onchange="update_sout()"/>
412 <label for="sout_mux_ts">MP4</label>
413 <input type="radio" name="sout_mux" id="sout_mux_mov" value="mov" onchange="update_sout()"/>
414 <label for="sout_mux_ts">MOV</label>
415 <input type="radio" name="sout_mux" id="sout_mux_wav" value="wav" onchange="update_sout()"/>
416 <label for="sout_mux_ts">WAV</label>
417 <input type="radio" name="sout_mux" id="sout_mux_raw" value="raw" onchange="update_sout()"/>
418 <label for="sout_mux_ts">Raw</label>
421 <div id="sout_transcode">
425 <input type="checkbox" id="sout_vcodec_s" onchange="update_sout()"/>
426 <label for="sout_vcodec_s">Video Codec</label>
429 <select id="sout_vcodec" onchange="update_sout()">
430 <option value="mp1v">mp1v</option>
431 <option value="mp2v">mp2v</option>
432 <option value="mp4v">mp4v</option>
433 <option value="DIV1">DIV1</option>
434 <option value="DIV2">DIV2</option>
435 <option value="DIV3">DIV3</option>
436 <option value="H263">H263</option>
437 <option value="H264">H264</option>
438 <option value="WMV1">WMV1</option>
439 <option value="WMV2">WMV2</option>
440 <option value="MJPG">MJPG</option>
441 <option value="theo">theo</option>
445 <label for="sout_vb">Bitrate (kb/s)</label>
446 <select id="sout_vb" onchange="update_sout()">
447 <option value="4096">4096</option>
448 <option value="3072">3072</option>
449 <option value="2048">2048</option>
450 <option value="1024">1024</option>
451 <option value="768">768</option>
452 <option value="512">512</option>
453 <option value="384">384</option>
454 <option value="256">256</option>
455 <option value="192">192</option>
456 <option value="128">128</option>
457 <option value="96">96</option>
458 <option value="64">64</option>
459 <option value="32">32</option>
460 <option value="16">16</option>
464 <label for="sout_scale">Scale</label>
465 <select id="sout_scale" onchange="update_sout()">
466 <option value="0.25">0.25</option>
467 <option value="0.5">0.5</option>
468 <option value="0.75">0.75</option>
469 <option value="1" selected="selected">1</option>
470 <option value="1.25">1.25</option>
471 <option value="1.5">1.5</option>
472 <option value="1.75">1.75</option>
473 <option value="2">2</option>
479 <input type="checkbox" id="sout_acodec_s" onchange="update_sout()"/>
480 <label for="sout_acodec_s">Audio Codec</label>
483 <select id="sout_acodec" onchange="update_sout()">
484 <option value="mpga">mpga</option>
485 <option value="mp2a">mp2a</option>
486 <option value="mp3">mp3</option>
487 <option value="mp4a">mp4a</option>
488 <option value="a42">a52</option>
489 <option value="vorb">vorb</option>
490 <option value="flac">flac</option>
491 <option value="spx">spx</option>
492 <option value="s16l">s16l</option>
493 <option value="fl32">fl32</option>
497 <label for="sout_ab">Bitrate (kb/s)</label>
498 <select id="sout_ab" onchange="update_sout()">
499 <option value="512">512</option>
500 <option value="384">384</option>
501 <option value="256">256</option>
502 <option value="192">192</option>
503 <option value="128">128</option>
504 <option value="96">96</option>
505 <option value="64">64</option>
506 <option value="32">32</option>
507 <option value="16">16</option>
511 <label for="sout_channels">Channels</label>
512 <select id="sout_channels" onchange="update_sout()">
513 <option value="">default</option>
514 <option value="1">1</option>
515 <option value="2">2</option>
516 <option value="4">4</option>
517 <option value="6">6</option>
523 <input type="checkbox" id="sout_sub" onchange="update_sout()"/>
524 <label for="sout_sub">Subtitles Codec</label>
527 <select id="sout_scodec" onchange="update_sout()">
528 <option value="dvbs">dvbs</option>
532 <input type="checkbox" id="sout_soverlay" onchange="update_sout()"/>
533 <label for="sout_soverlay">Subtitles overlay</label>
540 <input type="checkbox" id="sout_sap" onchange="update_sout()"/>
541 <label for="sout_sap">SAP announce</label>
543 <label for="sout_sap_group">Group name</label>
544 <input type="text" id="sout_sap_group" onchange="update_sout()"/>
545 <label for="sout_sap_name">Channel name</label>
546 <input type="text" id="sout_sap_name" onchange="update_sout()"/>
548 <input type="checkbox" id="sout_all" onchange="update_sout()"/>
549 <label for="sout_all">Select all elementary streams</label>
551 <label for="sout_ttl">Time-To-Live (TTL)</label>
552 <input type="text" id="sout_ttl" onchange="update_sout()"/>
561 <div class="controls">
562 <!--<button id="btn_delete" onmouseover="button_over(this);" onmouseout="button_out(this);">
563 <img src="images/delete.png" alt="Delete" />
564 <span class="btn_text">Delete</span>
566 <button id="btn_empty" onclick="pl_empty();" onmouseover="button_over(this);" onmouseout="button_out(this);">
567 <img src="images/empty.png" alt="Empty" />
568 <span class="btn_text">Empty</span>
571 <button id="btn_sort" onclick="pl_sort();" onmouseover="button_over(this);" onmouseout="button_out(this);">
572 <img src="images/sort.png" alt="Sort" />
573 <span class="btn_text">Sort</span>
576 <button id="btn_shuffle" onclick="pl_shuffle();" onmouseover="button_over(this);" onmouseout="button_out(this);">
577 <img src="images/shuffle.png" alt="Shuffle" />
578 <span class="btn_text">Shuffle</span>
580 <button id="btn_loop" onclick="pl_loop();" onmouseover="button_over(this);" onmouseout="button_out(this);">
581 <img src="images/loop.png" alt="Loop" />
582 <span class="btn_text">Loop</span>
584 <button id="btn_repeat" onclick="pl_repeat();" onmouseover="button_over(this);" onmouseout="button_out(this);">
585 <img src="images/repeat.png" alt="Repeat" />
586 <span class="btn_text">Repeat</span>
595 <vlc id="value" param1="copyright" />