diff --git a/lsp/mist.js b/lsp/mist.js index 8be7a5d4..0b3b3652 100644 --- a/lsp/mist.js +++ b/lsp/mist.js @@ -2824,7 +2824,7 @@ var UI = { var embedoptions = {autoplay: true}; function embedhtml(opts) { var open = ['div']; - var inner = "\n"+' <script src="'+embedbase+'embed_'+other+'.js"><'+'/script>'+"\n"; //don't leave the closing script tag complete + var inner = "\n"+' <script src="'+embedbase+'embed_'+encodeURIComponent(other)+'.js"><'+'/script>'+"\n"; //don't leave the closing script tag complete if (!opts.autoplay) { open.push('data-noautoplay'); } @@ -2844,17 +2844,17 @@ var UI = { { label: 'Embedable script', type: 'str', - value: embedbase+'embed_'+other+'.js', + value: embedbase+'embed_'+encodeURIComponent(other)+'.js', readonly: true },{ label: 'Stream info script', type: 'str', - value: embedbase+'info_'+other+'.js', + value: embedbase+'info_'+encodeURIComponent(other)+'.js', readonly: true },{ label: 'Autodetect player', type: 'str', - value: embedbase+other+'.html', + value: embedbase+encodeURIComponent(other)+'.html', readonly: true, qrcode: true },$('<h3>').text('Embed code'),{ @@ -3027,7 +3027,7 @@ var UI = { // jQuery doesn't work -> use DOM magic var script = document.createElement('script'); - script.src = embedbase+'embed_'+other+'.js'; + script.src = embedbase+'embed_'+encodeURIComponent(other)+'.js'; script.onerror = function(){ $c.html('Error loading "'+script.src+'".<br>').append( $('<button>').text('Try again').click(function(){ diff --git a/lsp/test_streamembed.html b/lsp/test_streamembed.html index d2b1839e..79755642 100644 --- a/lsp/test_streamembed.html +++ b/lsp/test_streamembed.html @@ -14,7 +14,7 @@ var embedtype = $('input[name=force]').val(); var info = document.createElement('script'); - info.src = 'http://'+(window.location.hostname == '' ? 'localhost' : window.location.hostname)+':8080/info_'+streamName+'.js?video=0'; + info.src = 'http://'+(window.location.hostname == '' ? 'localhost' : window.location.hostname)+':8080/info_'+encodeURIComponent(streamName)+'.js'; document.getElementById('embedcontainer').appendChild(info); info.onload = function(){ if (embedtype == '') { @@ -45,4 +45,4 @@ <div id=embedcontainer style="width: 100%; height: 35em;" data-forcesupportcheck data-autoplay> </div> </body> -</html> \ No newline at end of file +</html> diff --git a/src/embed.js b/src/embed.js index c8904bc6..264c3e38 100644 --- a/src/embed.js +++ b/src/embed.js @@ -189,7 +189,7 @@ function mistembed(streamname) { break; case 'html5': - container.innerHTML += '<video width="' + videowidth + '" height="' + videoheight + '" src="' + encodeURI(src.url) + '" controls="controls" '+(autoplay ? 'autoplay="autoplay"' : '')+'><strong>No HTML5 video support</strong></video>'; + container.innerHTML += '<video width="' + videowidth + '" height="' + videoheight + '" src="' + src.url + '" controls="controls" '+(autoplay ? 'autoplay="autoplay"' : '')+'><strong>No HTML5 video support</strong></video>'; break; case 'rtsp': @@ -264,11 +264,19 @@ function mistembed(streamname) { if(video.error) { // there was an error; display it - container.innerHTML = ['<strong>Error: ', video.error, '</strong>'].join(''); + if (video.on_error){ + container.innerHTML = video.on_error; + }else{ + container.innerHTML = ['<strong>Error: ', video.error, '</strong>'].join(''); + } } else if ((typeof video.source == 'undefined') || (video.source.length < 1)) { // no stream sources - container.innerHTML = '<strong>Error: no protocols found</strong>'; + if (video.on_error){ + container.innerHTML = video.on_error; + }else{ + container.innerHTML = '<strong>Error: no active source or compatible protocols for this stream</strong>'; + } } else { // no error, and sources found. Check the video types and output the best