]> git.sesse.net Git - vlc/blob - share/lua/http/dialogs/create_stream.html
cc9ddf45268e6d262b16f0d0064a658437141a84
[vlc] / share / lua / http / dialogs / create_stream.html
1 <script language="javascript" type="text/javascript">
2         $(function(){
3                 $('#stream_out_method').change(function(){
4                         $('#output_options').empty();
5                         switch($(this).val()){
6                                 case 'file':
7                                         var options     =       $('#file_options').clone();
8                                         break;
9                                 case 'http':
10                                         var options     =       $('#net_options').clone();
11                                         break;
12                                 case 'mmsh':
13                                 case 'rtp':
14                                 case 'udp':
15                                         var options     =       $('#net_options').clone();
16                                         $('#stream_out_file_',options).val('');
17                                         break;
18                         }
19                         $('[id]',options).each(function(){
20                                 $(this).attr('id',$(this).attr('id').substr(0,$(this).attr('id').length-1));
21                                 $(this).attr('name',$(this).attr('name').substr(0,$(this).attr('name').length-1));
22                         });
23                         $(options).css({
24                                 'visibility':'visible',
25                                 'display':'block'
26                         })
27                         $(options).appendTo('#output_options');
28                 });
29                 $('#stream_out_mux').change(function(){
30                         if($(this).val()=='ffmpeg'){
31                                 $('#stream_out_mux_opts').val('{mux=flv}');
32                         }else{
33                                 $('#stream_out_mux_opts').val('');
34                         }
35                 });
36                 $('#window_create_stream').dialog({
37                         autoOpen: false,
38                         width:800,
39                         modal: true,
40                         buttons:{
41                                 "Create":function(){
42                                         var e   =       false;
43                                         $('input',$(this)).removeClass('ui-state-error');
44                                         $('#stream_error_container').css({
45                                                 'visibility':'hidden',
46                                                 'display':'none'
47                                         });
48                                         if(!$('#stream_name').val()){
49                                                 $('#stream_name').addClass('ui-state-error');
50                                                 e       =       true;
51                                         }
52                                         if(!$('#stream_input').val()){
53                                                 $('#stream_input').addClass('ui-state-error');
54                                                 e       =       true;
55                                         }
56
57                                         if($('#stream_out_method').val()!='file' && !$('#stream_out_port').val()){
58                                                 $('#stream_out_port').addClass('ui-state-error');
59                                                 e       =       true;
60                                         }
61                                         if($('#stream_out_method').val()!='file' && !$('#stream_out_dest').val()){
62                                                 $('#stream_out_dest').addClass('ui-state-error');
63                                                 e       =       true;
64                                         }
65
66                                         if($('#stream_out_method').val()=='file' && !$('#stream_out_filename').val()){
67                                                 $('#stream_out_filename').addClass('ui-state-error');
68                                                 e       =       true;
69                                         }
70                                         if(e){
71                                                 $('#stream_error_message').empty();
72                                                 $('#stream_error_message').append('One or more fields require attention.');
73                                                 $('#stream_error_container').css({
74                                                         'visibility':'visible',
75                                                         'display':'block'
76                                                 })
77                                         }else{
78                                                 sendVLMCmd(buildStreamCode());
79                                                 $(this).dialog('close');
80                                         }
81                                 },
82                                 "Cancel":function(){
83                                         $(this).dialog('close');
84                                 }
85                         }
86                 });
87                 $('#button_input').click(function(){
88                         browse_target   =       '#stream_input';
89                         browse();
90                         $('#window_browse').dialog('open');
91                 });
92                 $('#button_in_screen').click(function(){
93                         $('#stream_input').val('screen://');
94                 });
95         });
96         function buildStreamCode(){
97                 var name                =       $('#stream_name').val().replace(' ','_');
98                 var infile              =       $('#stream_input').val();
99
100                 var vcodec              =       $('#stream_vcodec').val();
101                 var vb                  =       $('#stream_vb').val();
102                 var fps                 =       $('#stream_fps').val();
103                 var scale               =       $('#stream_scale').val();
104                 var dlace               =       $('#stream_deinterlace').is(':checked');
105
106                 var acodec              =       $('#stream_acodec').val();
107                 var ab                  =       $('#stream_ab').val();
108                 var srate               =       $('#stream_samplerate').val();
109                 var channels    =       $('#stream_channels').val();
110
111                 var scodec              =       $('#stream_scodec').val() && !$('#stream_soverlay').checked ? ','+$('#stream_scodec').val() : '';
112                 var soverlay    =       $('#stream_soverlay').is(':checked') ? ',soverlay' : '';
113
114                 var outmethod   =       $('#stream_out_method').val();
115                 var mux                 =       $('#stream_out_mux').val();
116                 var muxoptions  =       $('#stream_out_mux_opts').val() ? '{'+$('#stream_out_mux_opts').val()+'}' : '';
117
118                 if(outmethod=='file'){
119                         var filename    =       $('#stream_out_filename').val();
120                 }else{
121                         var outport             =       $('#stream_out_port').val();
122                         var outdest             =       $('#stream_out_dest').val();
123                         var outfile             =       $('#stream_out_file').val();
124                 }
125                 var dest                =       outmethod=='file' ? filename : (outfile ? outdest+':'+outport+'/'+outfile : outdest+':'+outport);
126                 var inCode              =       'new '+name+' broadcast enabled input "'+infile+'" ';
127                 var transCode   =       'output #transcode{vcodec='+vcodec+',vb='+vb+',fps='+fps+',scale='+scale+',acodec='+acodec+',ab='+ab+',samplerate='+srate+',channels='+channels+scodec+soverlay+'}';
128                 var outCode             =       ':std{access='+outmethod+',mux='+mux+muxoptions+',dst='+dest+'}';
129
130                 return inCode+transCode+outCode;
131         }
132 </script>
133 <div id="window_create_stream" title="Create Stream">
134         <table width="100%">
135                 <tr>
136                         <td style="text-align:right" valign="top">
137                                 <h5>Stream Name</h5>
138                         </td>
139                         <td colspan="5" valign="top">
140                                 <input type="text" name="stream_name" id="stream_name" value=""/>
141                         </td>
142                 </tr>
143                 <tr>
144                         <th colspan="2" valign="top">
145                                 <h5>Video</h5>
146                         </th>
147                         <th colspan="2" valign="top">
148                                 <h5>Audio</h5>
149                         </th>
150                         <th colspan="2" valign="top">
151                                 <h5>Subtitles</h5>
152                         </th>
153                         <th colspan="2" valign="top">
154                                 <h5>Output</h5>
155                         </th>
156                 </tr>
157                 <tr>
158                         <td style="text-align:right" valign="top">Video Codec</td>
159                         <td valign="top">
160                                 <select name="stream_vcodec" id="stream_vcodec">
161                                         <option value="FLV1">FLV1</option>
162                                         <option value="mp1v">mp1v</option>
163                                         <option value="mp2v">mp2v</option>
164                                         <option value="mp4v">mp4v</option>
165                                         <option value="DIV1">DIV1</option>
166                                         <option value="DIV2">DIV2</option>
167                                         <option value="DIV3">DIV3</option>
168                                         <option value="H263">H263</option>
169                                         <option value="H264">H264</option>
170                                         <option value="WMV1">WMV1</option>
171                                         <option value="WMV2">WMV2</option>
172                                         <option value="MJPG">MJPG</option>
173                                         <option value="theo">theo</option>
174                                 </select>
175                         </td>
176                         <td style="text-align:right" valign="top">Audio Codec</td>
177                         <td valign="top">
178                                 <select name="stream_acodec" id="stream_acodec">
179                                         <option value="mp3">mp3</option>
180                                         <option value="mpga">mpga</option>
181                                         <option value="mp2a">mp2a</option>
182                                         <option value="mp4a">mp4a</option>
183                                         <option value="a52">a52</option>
184                                         <option value="vorb">vorb</option>
185                                         <option value="flac">flac</option>
186                                         <option value="spx">spx</option>
187                                         <option value="s16l">s16l</option>
188                                         <option value="fl32">fl32</option>
189                                 </select>
190                         </td>
191                         <td style="text-align:right" valign="top">Subtitle Codec</td>
192                         <td valign="top">
193                                 <select name="stream_scodec" id="stream_scodec">
194                                         <option value="">none</option>
195                                         <option value="dvbs">dvbs</option>
196                                 </select>
197                         </td>
198                         <td style="text-align:right" valign="top">Output Method</td>
199                         <td valign="top">
200                                 <select name="stream_out_method" id="stream_out_method">
201                                         <option value="http">HTTP</option>
202                                         <option value="file">File</option>
203                                         <option value="mmsh">MMSH</option>
204                                         <option value="rtp">RTP</option>
205                                         <option value="udp">UDP</option>
206                                 </select>
207                         </td>
208                 </tr>
209                 <tr>
210                         <td style="text-align:right" valign="top">Video Bit Rate</td>
211                         <td valign="top">
212                                 <select name="stream_vb" id="stream_vb">
213                                         <option value="4096">4096</option>
214                                         <option value="3072">3072</option>
215                                         <option value="2048">2048</option>
216                                         <option value="1024">1024</option>
217                                         <option value="768">768</option>
218                                         <option value="512">512</option>
219                                         <option value="384">384</option>
220                                         <option value="256">256</option>
221                                         <option value="192">192</option>
222                                         <option value="128">128</option>
223                                         <option value="96">96</option>
224                                         <option value="64">64</option>
225                                         <option value="32">32</option>
226                                         <option value="16">16</option>
227                                 </select>
228                         </td>
229                         <td style="text-align:right" valign="top">Audio Bit Rate</td>
230                         <td valign="top">
231                                 <select name="stream_ab" id="stream_ab">
232                                         <option value="512">512</option>
233                                         <option value="384">384</option>
234                                         <option value="256">256</option>
235                                         <option value="192">192</option>
236                                         <option value="128">128</option>
237                                         <option value="96">96</option>
238                                         <option value="64">64</option>
239                                         <option value="32">32</option>
240                                         <option value="16">16</option>
241                                 </select>
242                         </td>
243                         <td style="text-align:right" valign="top">Overlay</td>
244                         <td valign="top">
245                                 <input type="checkbox" name="stream_soverlay" id="stream_soverlay" value="1" />
246                         </td>
247                         <td style="text-align:right" valign="top">Multiplexer</td>
248                         <td valign="top">
249                                 <select name="stream_out_mux" id="stream_out_mux">
250                                         <option value="ts">MPEG TS</option>
251                                         <option value="ps">MPEG PS</option>
252                                         <option value="mpeg1">MPEG 1</option>
253                                         <option value="ogg">OGG</option>
254                                         <option value="asf">ASF</option>
255                                         <option value="mp4">MP4</option>
256                                         <option value="mov">MOV</option>
257                                         <option value="wav">WAV</option>
258                                         <option value="raw">Raw</option>
259                                         <option value="ffmpeg" selected="selected">FFMPEG</option>
260                                 </select>
261                         </td>
262                 </tr>
263                 <tr>
264                         <td style="text-align:right" valign="top">Video FPS</td>
265                         <td valign="top">
266                                 <select name="stream_fps" id="stream_fps">
267                                         <option value="300">300</option>
268                                         <option value="120">120</option>
269                                         <option value="100">100</option>
270                                         <option value="72">72</option>
271                                         <option value="60">60</option>
272                                         <option value="50">50</option>
273                                         <option value="48">48</option>
274                                         <option value="30">30</option>
275                                         <option value="25" selected="selected">25</option>
276                                         <option value="24">24</option>
277                                 </select>
278                         </td>
279                         <td style="text-align:right" valign="top">Audio Sample Rate</td>
280                         <td valign="top">
281                                 <select name="stream_samplerate" id="stream_samplerate">
282                                         <option value="192000">192 KHz</option>
283                                         <option value="96000">96 KHz</option>
284                                         <option value="50000">50 KHz</option>
285                                         <option value="48000">48 KHz</option>
286                                         <option value="44100" selected="selected">44 KHz</option>
287                                         <option value="32000">32 KHz</option>
288                                         <option value="22050">22 KHz</option>
289                                         <option value="16000">16 KHz</option>
290                                         <option value="11025">11 KHz</option>
291                                         <option value="8000">8 KHz</option>
292                                 </select>
293                         </td>
294                         <td colspan="2" valign="top">&nbsp;</td>
295                         <td style="text-align:right" valign="top">MUX Options</td>
296                         <td valign="top">
297                                 <input type="text" name="stream_out_mux_opts" id="stream_out_mux_opts" value="{mux=flv}" />
298                         </td>
299                 </tr>
300                 <tr>
301                         <td style="text-align:right" valign="top">Video Scale</td>
302                         <td valign="top">
303                                 <select name="stream_scale" id="stream_scale">
304                                         <option value="0.25">25%</option>
305                                         <option value="0.5">50%</option>
306                                         <option value="0.75">75%</option>
307                                         <option selected="selected" value="1">100%</option>
308                                         <option value="1.25">125%</option>
309                                         <option value="1.5">150%</option>
310                                         <option value="1.75">175%</option>
311                                         <option value="2">200%</option>
312                                 </select>
313                         </td>
314                         <td style="text-align:right" valign="top">Audio Channels</td>
315                         <td valign="top">
316                                 <select name="stream_channels" id="stream_channels" >
317                                         <option value="1">1</option>
318                                         <option value="2" selected="selected">2</option>
319                                         <option value="4">4</option>
320                                         <option value="6">6</option>
321                                 </select>
322                         </td>
323                         <td colspan="2" valign="top">&nbsp;</td>
324                         <td colspan="2" rowspan="2" valign="top">
325                                 <div id="output_options">
326                                                 <table>
327                                                         <tr>
328                                                                 <td style="text-align:right" valign="top">Output Port</td>
329                                                                 <td valign="top"><input type="text" name="stream_out_port" id="stream_out_port" value="8081" /></td>
330                                                         </tr>
331                                                         <tr>
332                                                                 <td style="text-align:right" valign="top">Output Destination</td>
333                                                                 <td><input type="text" name="stream_out_dest" id="stream_out_dest" value="0.0.0.0" /></td>
334                                                         </tr>
335                                                         <tr>
336                                                                 <td style="text-align:right" valign="top">Output File</td>
337                                                                 <td valign="top"><input type="text" name="stream_out_file" id="stream_out_file" value="stream.flv" /></td>
338                                                         </tr>
339                                                 </table>
340                                 </div>
341                         </td>
342                 </tr>
343                 <tr>
344                         <td valign="top" style="text-align:right">Deinterlace</td>
345                         <td valign="top">
346                                 <input type="checkbox" name="stream_deinterlace" id="stream_deinterlace" value="1" />
347                         </td>
348                         <td colspan="2" valign="top">&nbsp;</td>
349                         <td colspan="2" valign="top">&nbsp;</td>
350                 </tr>
351                 <tr>
352                         <td style="text-align:right" colspan="2" valign="top">
353                                 Input Media
354                         </td>
355                         <td colspan="6" valign="top">
356                                 <input type="text" name="stream_input" id="stream_input" value="" size="50" />
357                                 <div id="button_input" class="button icon ui-widget ui-state-default" title="Media File" opendialog="window_browse"><span class="ui-icon ui-icon-eject"></span></div>
358                                 <div id="button_in_screen" class="button icon ui-widget ui-state-default" title="Capture Screen" ><span class="ui-icon ui-icon-contact"></span></div>
359                         </td>
360                 </tr>
361         </table>
362         <div class="ui-widget" id="stream_error_container" style="display:none;visibility: hidden;">
363                 <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
364                         <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
365                         <strong>Error:</strong> <span id="stream_error_message">Sample ui-state-error style.</span></p>
366                 </div>
367         </div>
368 </div>
369 <div id="net_options" style="display:none;visibility: hidden;">
370         <table>
371                 <tr>
372                         <td style="text-align:right" valign="top">Output Port</td>
373                         <td valign="top"><input type="text" name="stream_out_port_" id="stream_out_port_" value="8081" /></td>
374                 </tr>
375                 <tr>
376                         <td style="text-align:right" valign="top">Output Destination</td>
377                         <td valign="top"><input type="text" name="stream_out_dest_" id="stream_out_dest_" value="0.0.0.0" /></td>
378                 </tr>
379                 <tr>
380                         <td style="text-align:right" valign="top">Output File</td>
381                         <td valign="top"><input type="text" name="stream_out_file_" id="stream_out_file_" value="stream.flv" /></td>
382                 </tr>
383         </table>
384 </div>
385 <div id="file_options" style="display:none;visibility: hidden;">
386         <table>
387                 <tr>
388                         <td style="text-align:right" valign="top">File Name</td>
389                         <td valign="top"><input type="text" name="stream_out_filename_" id="stream_out_filename_"/></td>
390                 </tr>
391         </table>
392 </div>