diff --git a/embed/core.js b/embed/core.js
index d0bff1ce..1660a5e9 100644
--- a/embed/core.js
+++ b/embed/core.js
@@ -584,6 +584,12 @@ function mistPlay(streamName,options) {
embedLog('Forcing '+options.forceType);
forceType = options.forceType;
}
+ var forceSource = false;
+ if (('forceSource' in options) && (options.forceSource)) {
+ forceSource = options.forceSource;
+ forceType = streaminfo.source[forceSource].type;
+ embedLog('Forcing source '+options.forceSource+': '+forceType+' @ '+streaminfo.source[forceSource].url);
+ }
var forceSupportCheck = false;
if (('forceSupportCheck' in options) && (options.forceSupportCheck)) {
embedLog('Forcing a full support check');
@@ -620,14 +626,21 @@ function mistPlay(streamName,options) {
return false;
}
function checkMime(p_shortname,mime) {
- for (var s in streaminfo.source) {
- if (streaminfo.source[s].type == mime) {
- if (mistplayers[p_shortname].isBrowserSupported(mime,streaminfo.source[s],options)) {
- embedLog('Found a working combo: '+mistplayers[p_shortname].name+' with '+mime+' @ '+streaminfo.source[s].url);
+ var loop;
+ if (forceSource) {
+ loop = [streaminfo.source[forceSource]];
+ }
+ else {
+ loop = streaminfo.source;
+ }
+ for (var s in loop) {
+ if (loop[s].type == mime) {
+ if (mistplayers[p_shortname].isBrowserSupported(mime,loop[s],options)) {
+ embedLog('Found a working combo: '+mistplayers[p_shortname].name+' with '+mime+' @ '+loop[s].url);
streaminfo.working[p_shortname].push(mime);
if (!source) {
mistPlayer = p_shortname;
- source = streaminfo.source[s];
+ source = loop[s];
}
if (!forceSupportCheck) {
return source;
@@ -656,6 +669,7 @@ function mistPlay(streamName,options) {
}
}
+ options.target.innerHTML = '';
if (mistPlayer) {
//create the options to send to the player
var playerOpts = {
@@ -785,7 +799,6 @@ function mistPlay(streamName,options) {
//build the player
player.options = playerOpts;
var element = player.build(playerOpts);
- options.target.innerHTML = '';
options.target.appendChild(element);
element.setAttribute('data-player',mistPlayer);
element.setAttribute('data-mime',source.type);
diff --git a/embed/test.html b/embed/test.html
index 74c3133c..78d8d869 100644
--- a/embed/test.html
+++ b/embed/test.html
@@ -21,8 +21,8 @@
-
-
+
+
@@ -86,6 +86,7 @@
target: c,
forcePlayer: tryplayers[i],
//forceType: 'flash/7',
+ //forceSource: 5,
loop: true
});
}
diff --git a/embed/wrappers/html5.js b/embed/wrappers/html5.js
index 3982f7e9..00669f85 100644
--- a/embed/wrappers/html5.js
+++ b/embed/wrappers/html5.js
@@ -144,7 +144,46 @@ p.prototype.build = function (options,callback) {
//forward events
ele.addEventListener('error',function(e){
- me.adderror(e.message);
+ var msg;
+ if ('message' in e) {
+ msg = e.message;
+ }
+ else {
+ msg = 'readyState: ';
+ switch (me.element.readyState) {
+ case 0:
+ msg += 'HAVE_NOTHING';
+ break;
+ case 1:
+ msg += 'HAVE_METADATA';
+ break;
+ case 2:
+ msg += 'HAVE_CURRENT_DATA';
+ break;
+ case 3:
+ msg += 'HAVE_FUTURE_DATA';
+ break;
+ case 4:
+ msg += 'HAVE_ENOUGH_DATA';
+ break;
+ }
+ msg += ' networkState: ';
+ switch (me.element.networkState) {
+ case 0:
+ msg += 'NETWORK_EMPTY';
+ break;
+ case 1:
+ msg += 'NETWORK_IDLE';
+ break;
+ case 2:
+ msg += 'NETWORK_LOADING';
+ break;
+ case 3:
+ msg += 'NETWORK_NO_SOURCE';
+ break;
+ }
+ }
+ me.adderror(msg);
},true);
var events = ['abort','canplay','canplaythrough','durationchange','emptied','ended','interruptbegin','interruptend','loadeddata','loadedmetadata','loadstart','pause','play','playing','ratechange','seeked','seeking','stalled','volumechange','waiting'];
for (var i in events) {
diff --git a/lsp/minified.js b/lsp/minified.js
index a374274b..cd4d6fb3 100644
--- a/lsp/minified.js
+++ b/lsp/minified.js
@@ -118,9 +118,9 @@ break;case "TS":case "TS.exe":a.push({label:"TS",type:"span",clipboard:true,read
{type:"save",label:"Save and Preview","function":function(){ja("Preview")},classes:["saveandpreview"]}]}]));c.find("[name=name]").keyup(function(){W()});W();break;case "Preview":""==b&&UI.navto("Streams");r=":8080";for(g in mist.data.config.protocols)if(d=mist.data.config.protocols[g],"HTTP"==d.connector||"HTTP.exe"==d.connector)r=d.port?":"+d.port:":8080";var s=parseURL(mist.user.host),P=s.protocol+s.host+r+"/",I=$("
").css({display:"flex","flex-flow":"row wrap"}),s="";-1==b.indexOf("+")&&(s=
$("