mirror of https://code.videolan.org/videolan/vlc
HTTP UI - Updates
This patch contains various updates to the new HTTP UI Mobile views have only been tested on Android. Update - Added EQ functionality Update - Corrected rounding mistakes and EQ units Update - Added Mobile EQ Update - Added Mobile Flash View Update - Minor Display Adjustments Update - Revert Playlist.xml for backward compatability Update - Added playlist_jstree.xml for UI usability Update - Added Batch VLM Command interface Update - Added VLM command error reporting Update - Added functionality for future EQ merge into status.xml Update - Modified Makefile.am to include new files Update - Corrected main EQ button Update - Modified author comments Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
This commit is contained in:
parent
88359db48d
commit
56a168ba86
|
@ -248,118 +248,122 @@ EXTRA_DIST += \
|
|||
lua/sd/metachannels.lua
|
||||
|
||||
DIST_http_lua = \
|
||||
lua/http/.hosts \
|
||||
lua/http/css/main.css \
|
||||
lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css \
|
||||
lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_222222_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_228ef1_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_ef8c08_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_ffd27a_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_ffffff_256x240.png \
|
||||
lua/http/custom.lua \
|
||||
lua/http/dialogs/.hosts \
|
||||
lua/http/dialogs/browse \
|
||||
lua/http/dialogs/browse_window.html \
|
||||
lua/http/view.html \
|
||||
lua/http/mobile.html \
|
||||
lua/http/dialogs/create_stream.html \
|
||||
lua/http/dialogs/footer \
|
||||
lua/http/dialogs/input \
|
||||
lua/http/dialogs/main \
|
||||
lua/http/dialogs/mosaic \
|
||||
lua/http/dialogs/equalizer_window.html \
|
||||
lua/http/dialogs/mosaic_window.html \
|
||||
lua/http/dialogs/offset_window.html \
|
||||
lua/http/dialogs/playlist \
|
||||
lua/http/dialogs/sout \
|
||||
lua/http/dialogs/batch_window.html \
|
||||
lua/http/dialogs/error_window.html \
|
||||
lua/http/dialogs/browse_window.html \
|
||||
lua/http/dialogs/.hosts \
|
||||
lua/http/dialogs/stream_window.html \
|
||||
lua/http/dialogs/vlm \
|
||||
lua/http/favicon.ico \
|
||||
lua/http/dialogs/offset_window.html \
|
||||
lua/http/dialogs/stream_config_window.html \
|
||||
lua/http/custom.lua \
|
||||
lua/http/flash.html \
|
||||
lua/http/vlm.html \
|
||||
lua/http/images/loop.png \
|
||||
lua/http/images/button_pause-48.png \
|
||||
lua/http/images/speaker-32.png \
|
||||
lua/http/images/fullscreen.png \
|
||||
lua/http/images/vlc-48.png \
|
||||
lua/http/images/prev.png \
|
||||
lua/http/images/play.png \
|
||||
lua/http/images/Audio-48.png \
|
||||
lua/http/images/empty.png \
|
||||
lua/http/images/minus.png \
|
||||
lua/http/images/slider_right.png \
|
||||
lua/http/images/slider_point.png \
|
||||
lua/http/images/pause.png \
|
||||
lua/http/images/speaker_mute.png \
|
||||
lua/http/images/delete_small.png \
|
||||
lua/http/images/snapshot.png \
|
||||
lua/http/images/Folder-48.png \
|
||||
lua/http/images/info.png \
|
||||
lua/http/images/refresh.png \
|
||||
lua/http/images/sout.png \
|
||||
lua/http/images/button_stop-48.png \
|
||||
lua/http/images/button_help-48.png \
|
||||
lua/http/images/button-equalizer-48.png \
|
||||
lua/http/images/button_ffw-48.png \
|
||||
lua/http/images/sort.png \
|
||||
lua/http/images/button_play-48.png \
|
||||
lua/http/images/white_cross_small.png \
|
||||
lua/http/images/button_full-48.png \
|
||||
lua/http/images/shuffle.png \
|
||||
lua/http/images/Other-48.png \
|
||||
lua/http/images/button_repeat-48.png \
|
||||
lua/http/images/repeat.png \
|
||||
lua/http/images/slow.png \
|
||||
lua/http/images/slider_left.png \
|
||||
lua/http/images/help.png \
|
||||
lua/http/images/stop.png \
|
||||
lua/http/images/sd.png \
|
||||
lua/http/images/speaker.png \
|
||||
lua/http/images/button_first-48.png \
|
||||
lua/http/images/button_stream-48.png \
|
||||
lua/http/images/button_rew-48.png \
|
||||
lua/http/images/button_rec-48.png \
|
||||
lua/http/images/delete.png \
|
||||
lua/http/images/Back-48.png \
|
||||
lua/http/images/button_eject-48.png \
|
||||
lua/http/images/button_ffw-48.png \
|
||||
lua/http/images/button_first-48.png \
|
||||
lua/http/images/button_full-48.png \
|
||||
lua/http/images/button_help-48.png \
|
||||
lua/http/images/button_last-48.png \
|
||||
lua/http/images/button_pause-48.png \
|
||||
lua/http/images/button_play-48.png \
|
||||
lua/http/images/button_rec-48.png \
|
||||
lua/http/images/button_repeat-48.png \
|
||||
lua/http/images/button_rew-48.png \
|
||||
lua/http/images/button_stop-48.png \
|
||||
lua/http/images/button_stream-48.png \
|
||||
lua/http/images/delete.png \
|
||||
lua/http/images/delete_small.png \
|
||||
lua/http/images/eject.png \
|
||||
lua/http/images/empty.png \
|
||||
lua/http/images/Folder-48.png \
|
||||
lua/http/images/fullscreen.png \
|
||||
lua/http/images/help.png \
|
||||
lua/http/images/info.png \
|
||||
lua/http/images/loop.png \
|
||||
lua/http/images/minus.png \
|
||||
lua/http/images/next.png \
|
||||
lua/http/images/Other-48.png \
|
||||
lua/http/images/pause.png \
|
||||
lua/http/images/play.png \
|
||||
lua/http/images/playlist.png \
|
||||
lua/http/images/playlist_small.png \
|
||||
lua/http/images/plus.png \
|
||||
lua/http/images/prev.png \
|
||||
lua/http/images/refresh.png \
|
||||
lua/http/images/repeat.png \
|
||||
lua/http/images/reset.png \
|
||||
lua/http/images/sd.png \
|
||||
lua/http/images/shuffle.png \
|
||||
lua/http/images/slider_bar.png \
|
||||
lua/http/images/slider_left.png \
|
||||
lua/http/images/slider_point.png \
|
||||
lua/http/images/slider_right.png \
|
||||
lua/http/images/snapshot.png \
|
||||
lua/http/images/slow.png \
|
||||
lua/http/images/sort.png \
|
||||
lua/http/images/sout.png \
|
||||
lua/http/images/speaker-32.png \
|
||||
lua/http/images/speaker.png \
|
||||
lua/http/images/speaker_mute.png \
|
||||
lua/http/images/stop.png \
|
||||
lua/http/images/Video-48.png \
|
||||
lua/http/images/vlc16x16.png \
|
||||
lua/http/images/volume_down.png \
|
||||
lua/http/images/playlist_small.png \
|
||||
lua/http/images/eject.png \
|
||||
lua/http/images/playlist.png \
|
||||
lua/http/images/volume_up.png \
|
||||
lua/http/images/next.png \
|
||||
lua/http/images/button_last-48.png \
|
||||
lua/http/images/volume_down.png \
|
||||
lua/http/images/slider_bar.png \
|
||||
lua/http/images/vlc16x16.png \
|
||||
lua/http/images/plus.png \
|
||||
lua/http/images/white.png \
|
||||
lua/http/images/white_cross_small.png \
|
||||
lua/http/index.html \
|
||||
lua/http/js/common.js \
|
||||
lua/http/js/controlers.js \
|
||||
lua/http/js/functions.js \
|
||||
lua/http/js/jquery-1.5.1.min.js \
|
||||
lua/http/js/jquery.jstree.js \
|
||||
lua/http/js/jquery-ui-1.8.13.custom.min.js \
|
||||
lua/http/js/mosaic.js \
|
||||
lua/http/js/vlm.js \
|
||||
lua/http/images/reset.png \
|
||||
lua/http/mobile_equalizer.html \
|
||||
lua/http/vlm_export.html \
|
||||
lua/http/mobile_browse.html \
|
||||
lua/http/mosaic.html \
|
||||
lua/http/requests/browse.xml \
|
||||
lua/http/requests/equalizer.xml \
|
||||
lua/http/favicon.ico \
|
||||
lua/http/mobile_view.html \
|
||||
lua/http/.hosts \
|
||||
lua/http/requests/playlist.xml \
|
||||
lua/http/requests/README.txt \
|
||||
lua/http/requests/playlist_jstree.xml \
|
||||
lua/http/requests/equalizer.xml \
|
||||
lua/http/requests/browse.xml \
|
||||
lua/http/requests/vlm_cmd.xml \
|
||||
lua/http/requests/status.xml \
|
||||
lua/http/requests/vlm.xml \
|
||||
lua/http/requests/vlm_cmd.xml \
|
||||
lua/http/requests/README.txt \
|
||||
lua/http/style.css \
|
||||
lua/http/index.html \
|
||||
lua/http/css/ui-lightness/jquery-ui-1.8.13.custom.css \
|
||||
lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_ffffff_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_222222_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_ffd27a_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_228ef1_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-icons_ef8c08_256x240.png \
|
||||
lua/http/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png \
|
||||
lua/http/css/main.css \
|
||||
lua/http/iehacks.css \
|
||||
lua/http/view.html \
|
||||
lua/http/vlm.html \
|
||||
lua/http/vlm_export.html
|
||||
lua/http/js/jquery-1.5.1.min.js \
|
||||
lua/http/js/functions.js \
|
||||
lua/http/js/vlm.js \
|
||||
lua/http/js/ui.js \
|
||||
lua/http/js/common.js \
|
||||
lua/http/js/jquery.jstree.js \
|
||||
lua/http/js/controlers.js \
|
||||
lua/http/js/jquery-ui-1.8.13.custom.min.js \
|
||||
lua/http/js/mosaic.js \
|
||||
lua/http/style.css
|
||||
|
||||
DIST_maemo = \
|
||||
maemo/vlc_intf.rc \
|
||||
|
|
|
@ -90,6 +90,9 @@ body{
|
|||
#buttonSout{
|
||||
background-image: url("../images/button_stream-48.png") ;
|
||||
}
|
||||
#buttonEQ{
|
||||
background-image: url("../images/button-equalizer-48.png") ;
|
||||
}
|
||||
#window_browse ol{
|
||||
list-style-type: none;
|
||||
}
|
||||
|
@ -114,6 +117,18 @@ body{
|
|||
#window_create_stream table tr td{
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
#window_equalizer div div{
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
padding: 0px;
|
||||
}
|
||||
.eqBand{
|
||||
margin-bottom: 10px;
|
||||
margin-top: 10px;
|
||||
height: 400px;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
.footer{
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#window_batch').dialog({
|
||||
autoOpen: false,
|
||||
width: 600,
|
||||
modal: true,
|
||||
buttons:{
|
||||
"Send":function(){
|
||||
var cmds = $('#batchCommand').val().split("\n");
|
||||
for(var i=0;i<cmds.length;i++){
|
||||
cmds[i] = cmds[i].replace(/^#.*$/,'\n');
|
||||
}
|
||||
cmds = cmds.join(";").replace(/\n/g,';').replace(/;+/g,';').replace(/^;/,'');
|
||||
sendVLMCmd(cmds);
|
||||
$(this).dialog('close');
|
||||
},
|
||||
"Cancel":function(){
|
||||
$(this).dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<div id="window_batch" title="VLM Batch Commands">
|
||||
<textarea id="batchCommand" cols="50" rows="16">
|
||||
#paste your VLM commands here
|
||||
#separate commands with a new line or a semi-colon
|
||||
</textarea>
|
||||
</div>
|
|
@ -1,20 +1,11 @@
|
|||
<script language="javascript" type="text/javascript">
|
||||
var video_types = new Array('avi','mp4','wmv','mov','swf','vob','mkv','mpg');
|
||||
var audio_types = new Array('mp3','wav');
|
||||
var browse_target = 'default';
|
||||
function createElementLi(name,type,dir,ext){
|
||||
var icon = type=="dir" && name=='..' ? 'Back-48.png' : (type=='dir' ? "Folder-48.png" : ($.inArray(ext,video_types)!=-1 ? "Video-48.png" : ($.inArray(ext,audio_types)!=-1 ? "Audio-48.png" : "Other-48.png")));
|
||||
var open = type=="dir" ? "opendir='"+dir+"'" : (type=="file" ? "openfile='"+dir+"'" : "opendev='"+dir+"'");
|
||||
var str = "<li class='system_icon ui-widget-content' "+open+" ><img src='images/"+icon+"' width='48px' height='48px' title='"+name+"' alt='"+name+"' style='border: none;background:none;'/><div style='font-size:10px;border:none;background:none;'>"+name+"</div></li>";
|
||||
return str;
|
||||
}
|
||||
$(function(){
|
||||
$('#window_browse').dialog({
|
||||
autoOpen: false,
|
||||
width: 600,
|
||||
height: 650,
|
||||
modal: true,
|
||||
position: ['left','top'],
|
||||
resizable: false,
|
||||
buttons: {
|
||||
"Open":function(){
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
autoOpen: false,
|
||||
width:800,
|
||||
modal: true,
|
||||
position: ['left','top'],
|
||||
buttons:{
|
||||
"Create":function(){
|
||||
var e = false;
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<script language="javascript" type="text/javascript">
|
||||
var bands = new Array('60Hz','170Hz','310Hz','600Hz','1kHz','3kHz','6kHz','12kHz','14kHz','16kHz');
|
||||
$(function(){
|
||||
$('#window_equalizer').dialog({
|
||||
autoOpen: false,
|
||||
height: 650,
|
||||
width: 500,
|
||||
resizable: false,
|
||||
buttons:{
|
||||
"Reset":function(){
|
||||
$('.eqBand').each(function(){
|
||||
$(this).slider('value',0);
|
||||
sendEQCmd({
|
||||
command:'equalizer',
|
||||
val: 0,
|
||||
band: $(this).attr('id').substr(2)
|
||||
})
|
||||
});
|
||||
|
||||
},
|
||||
"Close":function(){
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#preamp').slider({
|
||||
min: -20,
|
||||
max: 20,
|
||||
step: 0.1,
|
||||
range: "min",
|
||||
animate: true,
|
||||
stop: function(event,ui){
|
||||
$('#preamp_txt').empty().append(ui.value+'dB');
|
||||
sendEQCmd({
|
||||
command:'preamp',
|
||||
val: ui.value
|
||||
})
|
||||
},
|
||||
slide: function(event,ui){
|
||||
$('#preamp_txt').empty().append(ui.value+'dB');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div id="window_equalizer" title="Graphical Equalizer">
|
||||
<div style="margin: 5px 5px 5px 5px;">
|
||||
<div>Preamp: <span id="preamp_txt">0dB</span></div>
|
||||
</div>
|
||||
<div style="margin: 5px 5px 10px 5px;">
|
||||
<div id="preamp" style="font-size: 18px;"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,19 @@
|
|||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#window_error').dialog({
|
||||
autoOpen: false,
|
||||
width:400,
|
||||
modal: true,
|
||||
buttons:{
|
||||
"Close":function(){
|
||||
$('#error_container').empty();
|
||||
$(this).dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<div id="window_error" title="Error!">
|
||||
<div class="ui-state-error"><div class="ui-icon ui-icon-alert"></div></div>
|
||||
<div id="error_container" class="ui-state-error"></div>
|
||||
</div>
|
|
@ -7,7 +7,6 @@
|
|||
minWidth: 800,
|
||||
minHeight: 500,
|
||||
modal: true,
|
||||
position: ['left','top'],
|
||||
buttons: {
|
||||
"Create": function() {
|
||||
$(this).dialog("close");
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
$('#window_offset').dialog({
|
||||
autoOpen: false,
|
||||
minWidth: 400,
|
||||
position: ['left','top'],
|
||||
buttons:{
|
||||
"Close":function(){
|
||||
$(this).dialog("close");
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#window_stream_config').dialog({
|
||||
autoOpen: false,
|
||||
width:400,
|
||||
modal: true,
|
||||
buttons:{
|
||||
"Okay":function(){
|
||||
$('#player').empty();
|
||||
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||
$(this).dialog('close');
|
||||
},
|
||||
"Cancel":function(){
|
||||
$(this).dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<div id="window_stream_config" title="Stream Input Configuration">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Protocol</td>
|
||||
<td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Host</td>
|
||||
<td><input type="text" name="stream_host" id="stream_host" value="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Port</td>
|
||||
<td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File</td>
|
||||
<td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
|
@ -11,7 +11,6 @@
|
|||
autoOpen: false,
|
||||
minWidth: 600,
|
||||
minHeight: 430,
|
||||
position: ['left','top'],
|
||||
buttons:{
|
||||
"Close":function(){
|
||||
$(this).dialog("close");
|
||||
|
@ -21,7 +20,6 @@
|
|||
$('#window_stream_config').dialog({
|
||||
autoOpen: false,
|
||||
width:400,
|
||||
position: ['left','top'],
|
||||
modal: true,
|
||||
buttons:{
|
||||
"Okay":function(){
|
||||
|
@ -44,6 +42,10 @@
|
|||
$('#button_create_mosaic').click(function(){
|
||||
$('#window_mosaic').dialog('open');
|
||||
return false;
|
||||
});
|
||||
$('#button_refresh_streams').click(function(){
|
||||
updateStreams();
|
||||
return false;
|
||||
})
|
||||
$('#stream_host').val(stream_server);
|
||||
});
|
||||
|
@ -67,6 +69,7 @@
|
|||
<div id="button_create_mosaic" class="button icon ui-widget ui-state-default" title="Create Mosaic" opendialog="window_create_mosaiac"><span class="ui-icon ui-icon-calculator"></span></div>
|
||||
<div id="button_clear_streams" class="button icon ui-widget ui-state-default" title="Delete All Streams"><span class="ui-icon ui-icon-trash"></span></div>
|
||||
<div id="button_config_streams" class="button icon ui-widget ui-state-default" title="Configure Stream Defaults"><span class="ui-icon ui-icon-wrench"></span></div>
|
||||
<div id="button_refresh_streams" class="button ui-widget ui-state-default ui-corner-all" title="Refresh Streams"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></div>
|
||||
<div id="stream_info">
|
||||
|
||||
</div>
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
|
@ -1,59 +1,52 @@
|
|||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< index.html: VLC media player web interface - VLM
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>VLC media player - Web Interface</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<script type="text/javascript">
|
||||
if(isMobile()){
|
||||
window.location='mobile.html';
|
||||
}
|
||||
</script>
|
||||
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
|
||||
<link type="text/css" href="css/main.css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<script type="text/javascript" src="js/ui.js"></script>
|
||||
<script type="text/javascript" src="js/controlers.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var pollStatus = true;
|
||||
$(function(){
|
||||
$('.button').hover(function(){$(this).addClass('ui-state-hover')},function(){$(this).removeClass('ui-state-hover')});
|
||||
$('.button48').hover(
|
||||
function(){$(this).css({'filter':'alpha(opacity=50)','-moz-opacity':'0.5','-khtml-opacity': '0.5'})},
|
||||
function(){$(this).css({'filter':'alpha(opacity=100)','-moz-opacity':'1','-khtml-opacity': '1'})}
|
||||
);
|
||||
|
||||
$( "#seekSlider" ).slider({
|
||||
range: "min",
|
||||
value: 0,
|
||||
min: 0,
|
||||
max: 100,
|
||||
stop: function( event, ui ) {
|
||||
$( "#currentTime" ).empty();
|
||||
$( "#currentTime" ).append( format_time(Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))) );
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
sendCommand({'command':'seek','val':Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))});
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current seek '+ui.value);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
$( "#volumeSlider" ).slider({
|
||||
range: "min",
|
||||
value: 50,
|
||||
min: 0,
|
||||
max: 100,
|
||||
stop: function( event, ui ) {
|
||||
$( "#currentVolume" ).empty();
|
||||
$( "#currentVolume" ).append( ui.value+"%" );
|
||||
sendCommand({
|
||||
'command':'volume',
|
||||
'val':Math.round(ui.value*5.12)
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
$('#buttonPlayList').click(function(){
|
||||
$('#libraryContainer').animate({
|
||||
height: 'toggle'
|
||||
|
@ -66,49 +59,23 @@
|
|||
})
|
||||
return false;
|
||||
});
|
||||
$('#buttonEqualizer').click(function(){
|
||||
updateEQ();
|
||||
$('#window_equalizer').dialog('open');
|
||||
return false;
|
||||
})
|
||||
$('#buttonOffsets').click(function(){
|
||||
$('#window_offset').dialog('open');
|
||||
})
|
||||
return false;
|
||||
});
|
||||
$('#buttonBatch').click(function(){
|
||||
$('#window_batch').dialog('open');
|
||||
return false;
|
||||
});
|
||||
$('#buttonOpen').click(function(){
|
||||
browse_target = 'default';
|
||||
browse();
|
||||
$('#window_browse').dialog('open');
|
||||
});
|
||||
$('#buttonStop').click(function(){
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
sendCommand({'command' : 'pl_stop'})
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current stop');
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
$('#buttonPlay').click(function(){
|
||||
if($(this).attr('state')=='stopped'){
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
var id = $('.jstree-clicked','#libraryTree').length>0 ? $('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5) : current_id;
|
||||
sendCommand({'command':'pl_play','id':id});
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current play');
|
||||
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||
break;
|
||||
}
|
||||
|
||||
}else{
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
sendCommand({'command':'pl_pause'});
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current pause');
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
$('#buttonPrev').mousedown(function(){
|
||||
|
@ -137,10 +104,6 @@
|
|||
intv = 0;
|
||||
return false;
|
||||
});
|
||||
$('#buttonFull').click(function(){
|
||||
sendCommand({'command':'fullscreen'});
|
||||
return false;
|
||||
});
|
||||
$('#buttonPlEmpty').click(function(){
|
||||
sendCommand({'command':'pl_empty'})
|
||||
return false;
|
||||
|
@ -179,6 +142,7 @@
|
|||
return false;
|
||||
});
|
||||
$('#buttonStreams, #buttonStreams2').click(function(){
|
||||
updateStreams();
|
||||
$('#window_streams').dialog('open');
|
||||
});
|
||||
$('#buttonSout').click(function(){
|
||||
|
@ -195,12 +159,14 @@
|
|||
$('#windowStreamConfirm').dialog({
|
||||
autoOpen: false,
|
||||
width:600,
|
||||
position: ['left','top'],
|
||||
modal: true,
|
||||
buttons:{
|
||||
"Yes":function(){
|
||||
var file = $('[current="current"]','#libraryTree').length>0 ? decodeURIComponent($('[current="current"]','#libraryTree').first().attr('uri').substr(7)) : ($('.jstree-clicked','#libraryTree').length>0 ? decodeURIComponent($('.jstree-clicked','#libraryTree').first().parents().first().attr('uri').substr(7)) : ($('#plid_'+current_id).attr('uri') ? decodeURIComponent($('#plid_'+current_id).attr('uri').substr(7)) : false));
|
||||
if(file){
|
||||
if($('#viewContainer').css('display')=='none'){
|
||||
$('#buttonViewer').click();
|
||||
}
|
||||
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=ffmpeg{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
|
||||
sendVLMCmd('del Current;'+defaultStream+';control Current play');
|
||||
$('#player').empty();
|
||||
|
@ -220,7 +186,6 @@
|
|||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div align="center">
|
||||
<div id="mainContainer" align="center">
|
||||
|
@ -244,6 +209,8 @@
|
|||
<div id="buttonViewer" class="button ui-widget ui-state-default ui-corner-all" title="Hide / Show Viewer" style="float: left;"><span class="ui-icon ui-icon-video"></span></div>
|
||||
<div id="buttonStreams" class="button ui-widget ui-state-default ui-corner-all" title="Manage Streams" style="float: left;"><span class="ui-icon ui-icon-script"></span></div>
|
||||
<div id="buttonOffsets" class="button ui-widget ui-state-default ui-corner-all" title="Track Synchronisation" style="float: left;"><span class="ui-icon ui-icon-transfer-e-w"></span></div>
|
||||
<div id="buttonEqualizer" class="button ui-widget ui-state-default ui-corner-all" title="Equalizer" style="float: left;"><span class="ui-icon ui-icon-signal"></span></div>
|
||||
<div id="buttonBatch" class="button ui-widget ui-state-default ui-corner-all" title="VLM Batch Commands" style="float: left;"><span class="ui-icon ui-icon-suitcase"></span></div>
|
||||
</td>
|
||||
<td>
|
||||
<div style="margin-left:20px;">
|
||||
|
@ -330,8 +297,7 @@
|
|||
<?vlc
|
||||
current_page = "index"
|
||||
|
||||
dialogs("browse_window.html","stream_window.html","create_stream.html","offset_window.html","mosaic_window.html");
|
||||
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");
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +1,8 @@
|
|||
var intv = 0;
|
||||
var ccmd = "";
|
||||
var video_types = new Array('avi','mp4','wmv','mov','swf','vob','mkv','mpg');
|
||||
var audio_types = new Array('mp3','wav');
|
||||
var stream_server = window.location.hostname;
|
||||
function format_time( s ){
|
||||
var hours = Math.floor(s/3600);
|
||||
var minutes = Math.floor((s/60)%60);
|
||||
|
@ -36,3 +39,23 @@ function setIntv(){
|
|||
}
|
||||
}
|
||||
}
|
||||
function convertHz(value){
|
||||
if(value>=1000){
|
||||
return Math.round(value/1000,2)+'kHz';
|
||||
}else{
|
||||
return Math.round(value,2)+'Hz';
|
||||
}
|
||||
}
|
||||
function isMobile(){
|
||||
var a = navigator.userAgent||navigator.vendor||window.opera;
|
||||
if(/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function createElementLi(name,type,dir,ext){
|
||||
var icon = type=="dir" && name=='..' ? 'Back-48.png' : (type=='dir' ? "Folder-48.png" : ($.inArray(ext,video_types)!=-1 ? "Video-48.png" : ($.inArray(ext,audio_types)!=-1 ? "Audio-48.png" : "Other-48.png")));
|
||||
var open = type=="dir" ? "opendir='"+dir+"'" : (type=="file" ? "openfile='"+dir+"'" : "opendev='"+dir+"'");
|
||||
var str = "<li class='system_icon ui-widget-content' "+open+" ><img src='images/"+icon+"' width='48px' height='48px' title='"+name+"' alt='"+name+"' style='border: none;background:none;'/><div style='font-size:10px;border:none;background:none;'>"+name+"</div></li>";
|
||||
return str;
|
||||
}
|
|
@ -21,6 +21,7 @@ function updateStatus(){
|
|||
$('#currentSubtitleDelay').append(Math.round($('subtitledelay',data).text()*100)/100+'s');
|
||||
$('#seekSlider').attr('totalLength',$('length',data).text());
|
||||
$('#buttonPlay').attr('state',$('state',data).text());
|
||||
$('#buttonPlay').attr('mrl',$('[name="filename"]',data).text());
|
||||
if($('state',data).text()=='playing'){
|
||||
$('#buttonPlay').css({
|
||||
'background-image':'url("images/button_pause-48.png")'
|
||||
|
@ -60,29 +61,64 @@ function updateStatus(){
|
|||
'display':'block'
|
||||
});
|
||||
}else if($('[name="artwork_url"]',data).text()==""){
|
||||
$('#albumArt').css({
|
||||
'visibility':'hidden',
|
||||
'display':'none'
|
||||
});
|
||||
$('#albumArt').attr('src','images/vlc-48.png');
|
||||
}
|
||||
setTimeout( updateStatus, 1000 );
|
||||
if(pollStatus){
|
||||
setTimeout( updateStatus, 1000 );
|
||||
}
|
||||
|
||||
}
|
||||
$('band',data).each(function(){
|
||||
var id = $(this).attr('id');
|
||||
var freq = convertHz($(this).attr('freqency'));
|
||||
var value = $(this).text() ? $(this).text() : 0;
|
||||
if(!$('#eq_container'+id).length){
|
||||
$('#window_equalizer').append('<div style="float:left;width:44px;" align="center" id="eq_container'+id+'"><div id="eq'+id+'_txt">'+value+'dB</div><div class="eqBand" id="eq'+id+'" style="font-size: 18px;"></div><div>'+freq+'</div></div>');
|
||||
$('#eq'+id).slider({
|
||||
min: -20,
|
||||
max: 20,
|
||||
step: 0.1,
|
||||
range: "min",
|
||||
value: value,
|
||||
animate: true,
|
||||
orientation: "vertical",
|
||||
stop: function(event,ui){
|
||||
$('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
|
||||
sendCommad({
|
||||
command:'equalizer',
|
||||
val: ui.value,
|
||||
band: $(this).attr('id').substr(2)
|
||||
})
|
||||
},
|
||||
slide: function(event,ui){
|
||||
$('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$('#eq'+id).slider({value:value});
|
||||
$('#eq'+id+'_txt').empty().append(Math.round(value*100)/100+'dB');
|
||||
}
|
||||
});
|
||||
$('#preamp').slider('value',$('preamp',data).text());
|
||||
$('#preamp_txt').empty().append(Math.round($('preamp',data).text()*100)/100+'dB');
|
||||
},
|
||||
error: function(jqXHR,status,error){
|
||||
setTimeout( updateStatus, 500 );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function updatePlayList(){
|
||||
$('#libraryTree').jstree('refresh',-1);
|
||||
}
|
||||
function sendCommand(params){
|
||||
function sendCommand(params,append){
|
||||
if(current_que=='stream'){
|
||||
$.ajax({
|
||||
url: 'requests/status.xml',
|
||||
data: params,
|
||||
success:function(data,status,jqXHR){
|
||||
if(append!=undefined){
|
||||
eval(append);
|
||||
}
|
||||
updateStatus();
|
||||
updatePlayList();
|
||||
}
|
||||
|
@ -91,20 +127,26 @@ function sendCommand(params){
|
|||
if(params.plreload===false){
|
||||
$.ajax({
|
||||
url: 'requests/status.xml',
|
||||
data: params
|
||||
data: params,
|
||||
success:function(data,status,jqXHR){
|
||||
if(append!=undefined){
|
||||
eval(append);
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$.ajax({
|
||||
url: 'requests/status.xml',
|
||||
data: params,
|
||||
success:function(data,status,jqXHR){
|
||||
if(append!=undefined){
|
||||
eval(append);
|
||||
}
|
||||
updatePlayList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
function browse(dir){
|
||||
dir = dir==undefined ? '~' : dir;
|
||||
|
@ -112,6 +154,7 @@ function browse(dir){
|
|||
url: 'requests/browse.xml',
|
||||
data:'dir='+encodeURIComponent(dir),
|
||||
success: function(data,status,jqXHR){
|
||||
var tgt = browse_target.indexOf('__')==-1 ? browse_target : browse_target.substr(0,browse_target.indexOf('__'));
|
||||
$('#browse_elements').empty();
|
||||
$('element',data).each(function(){
|
||||
if($(this).attr('type')=='dir' || $.inArray($(this).attr('name').substr(-3),video_types)!=-1 || $.inArray($(this).attr('name').substr(-3),audio_types)!=-1){
|
||||
|
@ -122,7 +165,6 @@ function browse(dir){
|
|||
browse($(this).attr('opendir'));
|
||||
});
|
||||
$('[openfile]').dblclick(function(){
|
||||
var tgt = browse_target.indexOf('__')==-1 ? browse_target : browse_target.substr(0,browse_target.indexOf('__'));
|
||||
switch(tgt){
|
||||
case '#stream_input':
|
||||
$(browse_target).val($(this).attr('openfile'));
|
||||
|
@ -136,14 +178,39 @@ function browse(dir){
|
|||
'float' : 'left'
|
||||
});
|
||||
break;
|
||||
case '#mobile':
|
||||
break;
|
||||
default:
|
||||
sendCommand('command=in_play&input=file://'+encodeURIComponent($(this).attr('openfile')));
|
||||
break;
|
||||
}
|
||||
$('#window_browse').dialog('close');
|
||||
});
|
||||
$('[selectable]').selectable();
|
||||
|
||||
$('[opendir]').click(function(){
|
||||
switch(tgt){
|
||||
case '#mobile':
|
||||
browse($(this).attr('opendir'));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
$('[openfile]').click(function(){
|
||||
switch(tgt){
|
||||
case '#mobile':
|
||||
sendCommand('command=in_play&input=file://'+encodeURIComponent($(this).attr('openfile')),"window.location='mobile.html'");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
switch(tgt){
|
||||
case '#mobile':
|
||||
break;
|
||||
default:
|
||||
$('[selectable]').selectable();
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function(jqXHR,status,error){
|
||||
setTimeout('browse("'+dir+'")',1041);
|
||||
|
@ -256,47 +323,113 @@ function updateStreams(){
|
|||
}
|
||||
setTimeout( updateStreams, 1000 );
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
function sendVLMCmd(command){
|
||||
function updateEQ(){
|
||||
$.ajax({
|
||||
url: 'requests/equalizer.xml',
|
||||
success: function(data,status,jqXHR){
|
||||
$('band',data).each(function(){
|
||||
var id = $(this).attr('id');
|
||||
var freq = convertHz($(this).attr('freqency'));
|
||||
var value = $(this).text() ? $(this).text() : 0;
|
||||
if(!$('#eq_container'+id).length){
|
||||
$('#window_equalizer').append('<div style="float:left;width:44px;" align="center" id="eq_container'+id+'"><div id="eq'+id+'_txt">'+value+'dB</div><div class="eqBand" id="eq'+id+'" style="font-size: 18px;"></div><div>'+freq+'</div></div>');
|
||||
$('#eq'+id).slider({
|
||||
min: -20,
|
||||
max: 20,
|
||||
step: 0.1,
|
||||
range: "min",
|
||||
value: value,
|
||||
animate: true,
|
||||
orientation: "vertical",
|
||||
stop: function(event,ui){
|
||||
$('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
|
||||
sendEQCmd({
|
||||
command:'equalizer',
|
||||
val: ui.value,
|
||||
band: $(this).attr('id').substr(2)
|
||||
})
|
||||
},
|
||||
slide: function(event,ui){
|
||||
$('#'+$(this).attr('id')+'_txt').empty().append(ui.value+'dB');
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$('#eq'+id).slider({value:value});
|
||||
$('#eq'+id+'_txt').empty().append(Math.round(value*100)/100+'dB');
|
||||
}
|
||||
});
|
||||
$('#preamp').slider('value',$('preamp',data).text());
|
||||
$('#preamp_txt').empty().append(Math.round($('preamp',data).text()*100)/100+'dB');
|
||||
}
|
||||
})
|
||||
}
|
||||
function sendVLMCmd(command,append){
|
||||
var commands = command.split(';');
|
||||
if(commands.length>1){
|
||||
sendBatchVLMCmd(command);
|
||||
sendBatchVLMCmd(command,append);
|
||||
}else{
|
||||
if(current_que=='main'){
|
||||
$.ajax({
|
||||
url: 'requests/vlm_cmd.xml',
|
||||
data: 'command='+encodeURIComponent(command),
|
||||
success: function(data,status,jqXHR){
|
||||
if($('error',data).text()){
|
||||
$('#error_container').append('<div>'+$('error',data).text()+'</div>');
|
||||
$('#window_error').dialog('open');
|
||||
}
|
||||
if(append!=undefined){
|
||||
eval(append);
|
||||
}
|
||||
updateStreams();
|
||||
}
|
||||
});
|
||||
}else{
|
||||
$.ajax({
|
||||
url: 'requests/vlm_cmd.xml',
|
||||
data: 'command='+encodeURIComponent(command)
|
||||
data: 'command='+encodeURIComponent(command),
|
||||
success: function(data,status,jqXHR){
|
||||
if($('error',data).text()){
|
||||
$('#error_container').append('<div>'+$('error',data).text()+'</div>');
|
||||
$('#window_error').dialog('open');
|
||||
}
|
||||
updateStreams();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
function sendBatchVLMCmd(command){
|
||||
function sendBatchVLMCmd(command,append){
|
||||
var commands = command.split(';');
|
||||
$.ajax({
|
||||
url: 'requests/vlm_cmd.xml',
|
||||
data: 'command='+encodeURIComponent(commands.shift()),
|
||||
success:function(data,status,jqXHR){
|
||||
sendVLMCmd(commands.join(';'));
|
||||
if($('error',data).text()){
|
||||
$('#error_container').append('<div>'+$('error',data).text()+'</div>');
|
||||
$('#window_error').dialog('open');
|
||||
}
|
||||
sendVLMCmd(commands.join(';'),append);
|
||||
}
|
||||
});
|
||||
}
|
||||
function sendEQCmd(params){
|
||||
$.ajax({
|
||||
url: 'requests/equalizer.xml',
|
||||
data: params,
|
||||
success: function(data,status,jqXHR){
|
||||
updateEQ();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(function(){
|
||||
$('#libraryTree').jstree({
|
||||
"xml_data":{
|
||||
"ajax":{
|
||||
"url" : "requests/playlist.xml"
|
||||
"url" : "requests/playlist_jstree.xml"
|
||||
},
|
||||
"xsl" : "nest"
|
||||
},
|
||||
|
@ -317,4 +450,5 @@ $(function(){
|
|||
});
|
||||
updateStatus();
|
||||
updateStreams();
|
||||
updateEQ();
|
||||
});
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
$(function(){
|
||||
$( "#seekSlider" ).slider({
|
||||
range: "min",
|
||||
value: 0,
|
||||
min: 0,
|
||||
max: 100,
|
||||
stop: function( event, ui ) {
|
||||
$( "#currentTime" ).empty().append( format_time(Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))) );
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
sendCommand({'command':'seek','val':Math.round((ui.value/100)*$('#seekSlider').attr('totalLength'))});
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current seek '+ui.value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
$( "#volumeSlider" ).slider({
|
||||
range: "min",
|
||||
value: 50,
|
||||
min: 0,
|
||||
max: 100,
|
||||
stop: function( event, ui ) {
|
||||
$( "#currentVolume" ).empty().append( ui.value+"%" );
|
||||
sendCommand({
|
||||
'command':'volume',
|
||||
'val':Math.round(ui.value*5.12)
|
||||
})
|
||||
}
|
||||
});
|
||||
$('#buttonStop').click(function(){
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
sendCommand({'command' : 'pl_stop'})
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current stop');
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
$('#buttonPlay').click(function(){
|
||||
if($(this).attr('state')=='stopped'){
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
var id = $('.jstree-clicked','#libraryTree').length>0 ? $('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5) : current_id;
|
||||
sendCommand({'command':'pl_play','id':id});
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current play');
|
||||
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
switch(current_que){
|
||||
case 'main':
|
||||
sendCommand({'command':'pl_pause'});
|
||||
break;
|
||||
case 'stream':
|
||||
sendVLMCmd('control Current pause');
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
$('#buttonFull').click(function(){
|
||||
sendCommand({'command':'fullscreen'});
|
||||
return false;
|
||||
});
|
||||
$('#stream_host').val(stream_server);
|
||||
})
|
|
@ -0,0 +1,122 @@
|
|||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< mobile.html: VLC media player web interface - VLM
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
<html>
|
||||
<head>
|
||||
<title>VLC media player - Web Interface</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="viewport" content="width=device-width; user-scalable=no" />
|
||||
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
|
||||
<link type="text/css" href="css/main.css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script type="text/javascript" src="js/ui.js"></script>
|
||||
<script type="text/javascript" src="js/controlers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var pollStatus = true;
|
||||
$(function(){
|
||||
$('#buttonPrev').click(function(){
|
||||
sendCommand({'command':'pl_previous'});
|
||||
return false;
|
||||
});
|
||||
$('#buttonNext').click(function(){
|
||||
sendCommand({'command':'pl_next'});
|
||||
return false;
|
||||
});
|
||||
$('#buttonOpen').click(function(){
|
||||
window.location='mobile_browse.html';
|
||||
});
|
||||
$('#buttonEQ').click(function(){
|
||||
window.location='mobile_equalizer.html';
|
||||
});
|
||||
$('#buttonSout').click(function(){
|
||||
var file = decodeURIComponent($('#buttonPlay').attr('mrl'));
|
||||
if(file){
|
||||
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=ffmpeg{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
|
||||
sendVLMCmd('del Current;'+defaultStream+';control Current play','window.location="mobile_view.html"');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
})
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" style="height:100%" border="0">
|
||||
|
||||
<tr>
|
||||
<td valign="top" height="130px">
|
||||
<img id="albumArt" src="/art" width="141px" height="130px" alt="Album Art" style="border:2px solid #000000;"/>
|
||||
</td>
|
||||
<td valign="top" width="125px" class="ui-widget-content" rowspan="2">
|
||||
<div id="buttonOpen" class="button48 ui-corner-all" title="Open Media"></div>
|
||||
<div id="buttonFull" class="button48 ui-corner-all" title="Full Screen"></div>
|
||||
<div id="buttonEQ" class="button48 ui-corner-all" title="Equalizer"></div>
|
||||
<div id="buttonSout" class="button48 ui-corner-all" title="Easy Stream"></div
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" valign="bottom" height="60px">
|
||||
<div id="volumeSlider" title="Volume" style="width:98%; margin-left:10px; font-size:30px;"><img src="images/speaker-32.png" class="ui-slider-handle" alt="volume"/></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" valign="bottom" height="20px">
|
||||
<div id="mediaTitle" class="dynamic"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="controlButtons" colspan="2" valign="bottom" height="108px;" class="ui-widget-content">
|
||||
<div align="center">
|
||||
<div id="buttonPrev" class="button48 ui-corner-all" title="Previous"></div>
|
||||
<div id="buttonPlay" class="button48 ui-corner-all" title="Play"></div>
|
||||
<div id="buttonNext" class="button48 ui-corner-all" title="Next"></div>
|
||||
<div id="buttonStop" class="button48 ui-corner-all" title="Stop"></div>
|
||||
</div>
|
||||
<div id="seekSlider" title="Seek Time" style="width:98%; margin-left:10px;font-size:30px;"></div>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<div id="currentTime" class="dynamic">00:00:00</div>
|
||||
</td>
|
||||
<td>
|
||||
<div id="totalTime" class="dynamic">00:00:00</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<?vlc
|
||||
|
||||
dialogs("stream_config_window.html");
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,54 @@
|
|||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< mobile_browse.html: VLC media player web interface - VLM
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
<html>
|
||||
<head>
|
||||
<title>VLC media player - Web Interface</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="viewport" content="width=device-width; user-scalable=no" />
|
||||
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
|
||||
<link type="text/css" href="css/main.css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script type="text/javascript" src="js/controlers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var pollStatus = false;
|
||||
var browse_target = '#mobile';
|
||||
$(function(){
|
||||
browse();
|
||||
})
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="window_browse" title="Media Browser">
|
||||
<div>
|
||||
<ol id='browse_elements' selectable="selectable">
|
||||
<li>Play List</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,70 @@
|
|||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< mobile_equalizer.html: VLC media player web interface - VLM
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
<html>
|
||||
<head>
|
||||
<title>VLC media player - Web Interface</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="viewport" content="width=device-width; user-scalable=no" />
|
||||
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
|
||||
<link type="text/css" href="css/main.css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script type="text/javascript" src="js/controlers.js"></script>
|
||||
<script language="javascript" type="text/javascript">
|
||||
var pollStatus = false;
|
||||
$(function(){
|
||||
$('#preamp').slider({
|
||||
min: -20,
|
||||
max: 20,
|
||||
step: 0.1,
|
||||
range: "min",
|
||||
animate: true,
|
||||
stop: function(event,ui){
|
||||
$('#preamp_txt').empty().append(ui.value+'dB');
|
||||
sendEQCmd({
|
||||
command:'preamp',
|
||||
val: ui.value
|
||||
})
|
||||
},
|
||||
slide: function(event,ui){
|
||||
$('#preamp_txt').empty().append(ui.value+'dB');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="window_equalizer" title="Graphical Equalizer">
|
||||
<div style="margin: 5px 5px 5px 5px;">
|
||||
<div>Preamp: <span id="preamp_txt">0dB</span></div>
|
||||
</div>
|
||||
<div style="margin: 5px 5px 10px 5px;">
|
||||
<div id="preamp" style="font-size: 22px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,55 @@
|
|||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< mobile_view.html: VLC media player web interface - VLM
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
<html>
|
||||
<head>
|
||||
<title>VLC media player - Web Interface</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="viewport" content="width=device-width; user-scalable=no" />
|
||||
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
|
||||
<link type="text/css" href="css/main.css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery.jstree.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script type="text/javascript" src="js/controlers.js"></script>
|
||||
<script type="text/javascript" src="js/ui.js"></script>
|
||||
<script language="javascript" type="text/javascript">
|
||||
var pollStatus = false;
|
||||
$(function(){
|
||||
$('#player').empty();
|
||||
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="player" style="width:100%;height:100%">
|
||||
|
||||
</div>
|
||||
<?vlc
|
||||
dialogs("stream_config_window.html");
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -6,25 +6,25 @@ vim:syntax=lua
|
|||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
<
|
||||
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
|
||||
<
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
]] ?>
|
||||
<root>
|
||||
|
||||
<?vlc
|
||||
--[[
|
||||
function a(t,pre)
|
||||
|
@ -42,17 +42,11 @@ function print_playlist(item)
|
|||
if item.flags.disabled then return end
|
||||
if(item.children) then
|
||||
local name = vlc.strings.convert_xml_special_chars(item.name or "")
|
||||
if(name ~= "Undefined") then
|
||||
print('<item id="plid_' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '"><content><name>' ..name.. '</name></content>')
|
||||
for _, child in ipairs(item.children) do
|
||||
print_playlist(child)
|
||||
end
|
||||
print('</item>')
|
||||
else
|
||||
for _, child in ipairs(item.children) do
|
||||
print_playlist(child)
|
||||
end
|
||||
end
|
||||
print('<node id="' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '">')
|
||||
for _, child in ipairs(item.children) do
|
||||
print_playlist(child)
|
||||
end
|
||||
print('</node>')
|
||||
else
|
||||
local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "")
|
||||
local current_item = vlc.input.item()
|
||||
|
@ -63,7 +57,7 @@ function print_playlist(item)
|
|||
current = 'current="current"'
|
||||
end
|
||||
end
|
||||
print('<item id="plid_' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' ><content><name>' ..name.. '</name></content></item>')
|
||||
print('<leaf id="' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' />')
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -82,4 +76,3 @@ end
|
|||
--a(p) --Uncomment to debug
|
||||
print_playlist(p)
|
||||
?>
|
||||
</root>
|
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?<?vlc print'>'?>
|
||||
<?vlc --[[
|
||||
vim:syntax=lua
|
||||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< playlist.xml: VLC media player web interface
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
]] ?>
|
||||
<root>
|
||||
<?vlc
|
||||
--[[
|
||||
function a(t,pre)
|
||||
local pre = pre or ""
|
||||
for k,v in pairs(t) do
|
||||
vlc.msg.err(pre..tostring(k).." : "..tostring(v))
|
||||
if type(v) == "table" then
|
||||
a(v,pre.." ")
|
||||
end
|
||||
end
|
||||
end
|
||||
--]]
|
||||
|
||||
function print_playlist(item)
|
||||
if item.flags.disabled then return end
|
||||
if(item.children) then
|
||||
local name = vlc.strings.convert_xml_special_chars(item.name or "")
|
||||
if(name ~= "Undefined") then
|
||||
print('<item id="plid_' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '"><content><name>' ..name.. '</name></content>')
|
||||
for _, child in ipairs(item.children) do
|
||||
print_playlist(child)
|
||||
end
|
||||
print('</item>')
|
||||
else
|
||||
for _, child in ipairs(item.children) do
|
||||
print_playlist(child)
|
||||
end
|
||||
end
|
||||
else
|
||||
local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "")
|
||||
local current_item = vlc.input.item()
|
||||
local current = ""
|
||||
-- Is the item the one currently played
|
||||
if(current_item ~= nil) then
|
||||
if(vlc.input.item().uri(current_item) == path) then
|
||||
current = 'current="current"'
|
||||
end
|
||||
end
|
||||
print('<item id="plid_' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' ><content><name>' ..name.. '</name></content></item>')
|
||||
end
|
||||
end
|
||||
|
||||
local p
|
||||
if _GET["search"] then
|
||||
if _GET["search"] ~= "" then
|
||||
_G.search_key = _GET["search"]
|
||||
else
|
||||
_G.search_key = nil
|
||||
end
|
||||
local key = vlc.strings.decode_uri(_GET["search"])
|
||||
p = vlc.playlist.search(key)
|
||||
else
|
||||
p = vlc.playlist.get()
|
||||
end
|
||||
--a(p) --Uncomment to debug
|
||||
print_playlist(p)
|
||||
?>
|
||||
</root>
|
|
@ -1,16 +1,39 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< view.html: VLC media player web interface - VLM
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
|
||||
< Copyright (C) 2005-2006 the VideoLAN team
|
||||
< $Id$
|
||||
<
|
||||
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
|
||||
<
|
||||
< This program is free software; you can redistribute it and/or modify
|
||||
< it under the terms of the GNU General Public License as published by
|
||||
< the Free Software Foundation; either version 2 of the License, or
|
||||
< (at your option) any later version.
|
||||
<
|
||||
< This program is distributed in the hope that it will be useful,
|
||||
< but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
< GNU General Public License for more details.
|
||||
<
|
||||
< You should have received a copy of the GNU General Public License
|
||||
< along with this program; if not, write to the Free Software
|
||||
< Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||||
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>VLC media player - Flash Viewer</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
|
||||
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
|
||||
<link type="text/css" href="css/main.css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="js/common.js"></script>
|
||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="http://static.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
|
||||
<script language="javascript" type="text/javascript">
|
||||
var stream_server = window.location.hostname;
|
||||
|
||||
$(function(){
|
||||
$('#window_stream').resizable({
|
||||
minHeight: 300,
|
||||
|
@ -22,27 +45,9 @@
|
|||
})
|
||||
}
|
||||
});
|
||||
$('#window_stream_config').dialog({
|
||||
autoOpen: false,
|
||||
width:400,
|
||||
position: ['left','top'],
|
||||
modal: true,
|
||||
buttons:{
|
||||
"Okay":function(){
|
||||
$('#player').empty();
|
||||
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||
$(this).dialog('close');
|
||||
},
|
||||
"Cancel":function(){
|
||||
$(this).dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#button_stream_config').click(function(){
|
||||
$('#window_stream_config').dialog('open');
|
||||
});
|
||||
$('#stream_host').val(stream_server);
|
||||
$('#player').empty();
|
||||
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
|
||||
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
|
||||
|
@ -68,25 +73,9 @@
|
|||
<?vlc print(vlc.misc.version() .. " - Lua Web Interface - " .. vlc.misc.copyright()) ?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="window_stream_config" title="Stream Input Configuration">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Protocol</td>
|
||||
<td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Host</td>
|
||||
<td><input type="text" name="stream_host" id="stream_host" value="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Port</td>
|
||||
<td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File</td>
|
||||
<td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<?vlc
|
||||
|
||||
dialogs("stream_config_window.html");
|
||||
?>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue