LSP: lots of fixes
This commit is contained in:
parent
353d58e98f
commit
5bc15ea794
3 changed files with 207 additions and 205 deletions
|
@ -1,164 +1,167 @@
|
|||
function mistembed(streamname)
|
||||
{
|
||||
// return the current flash version
|
||||
function flash_version()
|
||||
{
|
||||
var version = 0;
|
||||
// return the current flash version
|
||||
function flash_version()
|
||||
{
|
||||
var version = 0;
|
||||
|
||||
try
|
||||
{
|
||||
// check in the mimeTypes
|
||||
version = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description.replace(/([^0-9\.])/g, '').split('.')[0];
|
||||
}catch(e){}
|
||||
try
|
||||
{
|
||||
// for our special friend IE
|
||||
version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable("$version").replace(/([^0-9\,])/g, '').split(',')[0];
|
||||
}catch(e){}
|
||||
try
|
||||
{
|
||||
// check in the mimeTypes
|
||||
version = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description.replace(/([^0-9\.])/g, '').split('.')[0];
|
||||
}catch(e){}
|
||||
try
|
||||
{
|
||||
// for our special friend IE
|
||||
version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable("$version").replace(/([^0-9\,])/g, '').split(',')[0];
|
||||
}catch(e){}
|
||||
|
||||
return parseInt(version, 10);
|
||||
};
|
||||
return parseInt(version, 10);
|
||||
};
|
||||
|
||||
function html5_video_type(type)
|
||||
{
|
||||
var support = false;
|
||||
function html5_video_type(type)
|
||||
{
|
||||
var support = false;
|
||||
|
||||
try
|
||||
{
|
||||
var v = document.createElement('video');
|
||||
try
|
||||
{
|
||||
var v = document.createElement('video');
|
||||
|
||||
if( v && v.canPlayType(type) != "" )
|
||||
{
|
||||
support = true;
|
||||
}
|
||||
}catch(e){}
|
||||
if( v && v.canPlayType(type) != "" )
|
||||
{
|
||||
support = true;
|
||||
}
|
||||
}catch(e){}
|
||||
|
||||
return support;
|
||||
}
|
||||
return support;
|
||||
}
|
||||
|
||||
// what does the browser support - used in hasSupport()
|
||||
supports =
|
||||
{
|
||||
flashversion: flash_version(),
|
||||
hls: html5_video_type('application/vnd.apple.mpegURL'),
|
||||
ism: html5_video_type('application/vnd.ms-ss')
|
||||
};
|
||||
// what does the browser support - used in hasSupport()
|
||||
supports =
|
||||
{
|
||||
flashversion: flash_version(),
|
||||
hls: html5_video_type('application/vnd.apple.mpegURL'),
|
||||
ism: html5_video_type('application/vnd.ms-ss')
|
||||
};
|
||||
|
||||
// return true if a type is supported
|
||||
function hasSupport(type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case 'f4v': return supports.flashversion >= 11; break;
|
||||
case 'rtmp': return supports.flashversion >= 10; break;
|
||||
case 'flv': return supports.flashversion >= 7; break;
|
||||
// return true if a type is supported
|
||||
function hasSupport(type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case 'f4v': return supports.flashversion >= 11; break;
|
||||
case 'rtmp': return supports.flashversion >= 10; break;
|
||||
case 'flv': return supports.flashversion >= 7; break;
|
||||
|
||||
case 'hls': return supports.hls; break;
|
||||
case 'ism': return supports.ism; break;
|
||||
case 'hls': return supports.hls; break;
|
||||
case 'ism': return supports.ism; break;
|
||||
|
||||
default: return false;
|
||||
}
|
||||
};
|
||||
default: return false;
|
||||
}
|
||||
};
|
||||
|
||||
// build HTML for certain kinds of types
|
||||
function buildPlayer(src, container, videowidth, videoheight, vtype)
|
||||
{
|
||||
// used to recalculate the width/height
|
||||
var ratio;
|
||||
// build HTML for certain kinds of types
|
||||
function buildPlayer(src, container, videowidth, videoheight, vtype)
|
||||
{
|
||||
// used to recalculate the width/height
|
||||
var ratio;
|
||||
|
||||
// get the container's width/height
|
||||
var containerwidth = parseInt(container.scrollWidth, 10);
|
||||
var containerheight = parseInt(container.scrollHeight, 10);
|
||||
// get the container's width/height
|
||||
var containerwidth = parseInt(container.scrollWidth, 10);
|
||||
var containerheight = parseInt(container.scrollHeight, 10);
|
||||
|
||||
if(videowidth > containerwidth && containerwidth > 0)
|
||||
{
|
||||
ratio = videowidth / containerwidth;
|
||||
if(videowidth > containerwidth && containerwidth > 0)
|
||||
{
|
||||
ratio = videowidth / containerwidth;
|
||||
|
||||
videowidth /= ratio;
|
||||
videoheight /= ratio;
|
||||
}
|
||||
videowidth /= ratio;
|
||||
videoheight /= ratio;
|
||||
}
|
||||
|
||||
if(videoheight > containerheight && containerheight > 0)
|
||||
{
|
||||
ratio = videoheight / containerheight;
|
||||
if(videoheight > containerheight && containerheight > 0)
|
||||
{
|
||||
ratio = videoheight / containerheight;
|
||||
|
||||
videowidth /= ratio;
|
||||
videoheight /= ratio;
|
||||
}
|
||||
videowidth /= ratio;
|
||||
videoheight /= ratio;
|
||||
}
|
||||
|
||||
// if the video type is 'live',
|
||||
lappend = vtype == 'live' ? "&streamType=live" : "";
|
||||
// if the video type is 'live',
|
||||
lappend = vtype == 'live' ? "&streamType=live" : "";
|
||||
|
||||
switch(src.type)
|
||||
{
|
||||
case 'f4v':
|
||||
case 'rtmp':
|
||||
case 'flv':
|
||||
container.innerHTML = '<object width="' + videowidth + '" height="' + videoheight + '"><param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param><param name="flashvars" value="src=' + encodeURI(src.url) + '&controlBarMode=floating&expandedBufferTime=4&minContinuousPlaybackTime=10' + lappend + '"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + videowidth + '" height="' + videoheight + '" flashvars="src=' + encodeURI(src.url) + '&controlBarMode=floating&expandedBufferTime=4&minContinuousPlaybackTime=10"></embed></object>';
|
||||
break;
|
||||
switch(src.type)
|
||||
{
|
||||
case 'f4v':
|
||||
case 'rtmp':
|
||||
case 'flv':
|
||||
container.innerHTML = '<object width="' + videowidth + '" height="' + videoheight + '"><param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param><param name="flashvars" value="src=' + encodeURI(src.url) + '&controlBarMode=floating&expandedBufferTime=4&minContinuousPlaybackTime=10' + lappend + '"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + videowidth + '" height="' + videoheight + '" flashvars="src=' + encodeURI(src.url) + '&controlBarMode=floating&expandedBufferTime=4&minContinuousPlaybackTime=10"></embed></object>';
|
||||
break;
|
||||
|
||||
|
||||
case 'hls':
|
||||
case 'ism':
|
||||
container.innerHTML = '<video width="' + videowidth + '" height="' + videoheight + '" src="' + encodeURI(src.url) + '" controls="controls" ><strong>No HTML5 video support</strong></video>';
|
||||
break;
|
||||
case 'hls':
|
||||
case 'ism':
|
||||
container.innerHTML = '<video width="' + videowidth + '" height="' + videoheight + '" src="' + encodeURI(src.url) + '" controls="controls" ><strong>No HTML5 video support</strong></video>';
|
||||
break;
|
||||
|
||||
|
||||
case 'fallback':
|
||||
container.innerHTML = '<strong>No support for any player found</strong>';
|
||||
break;
|
||||
}
|
||||
case 'fallback':
|
||||
container.innerHTML = '<strong>No support for any player found</strong>';
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
var video = mistvideo[streamname],
|
||||
container = document.createElement('div'),
|
||||
scripts = document.getElementsByTagName('script'),
|
||||
me = scripts[scripts.length - 1];
|
||||
var video = mistvideo[streamname],
|
||||
container = document.createElement('div'),
|
||||
scripts = document.getElementsByTagName('script'),
|
||||
me = scripts[scripts.length - 1];
|
||||
|
||||
if (video.width == 0) { video.width = 250; }
|
||||
if (video.height == 0) { video.height = 250; }
|
||||
|
||||
// create the container
|
||||
me.parentNode.insertBefore(container, me);
|
||||
// set the class to 'mistvideo'
|
||||
container.setAttribute('class', 'mistvideo');
|
||||
// remove script tag
|
||||
me.parentNode.removeChild(me);
|
||||
|
||||
// create the container
|
||||
me.parentNode.insertBefore(container, me);
|
||||
// set the class to 'mistvideo'
|
||||
container.setAttribute('class', 'mistvideo');
|
||||
// remove script tag
|
||||
me.parentNode.removeChild(me);
|
||||
|
||||
if(video.error)
|
||||
{
|
||||
// there was an error; display it
|
||||
container.innerHTML = ['<strong>Error: ', video.error, '</strong>'].join('');
|
||||
}else if(video.source.length < 1)
|
||||
{
|
||||
// no stream sources
|
||||
container.innerHTML = '<strong>Error: no streams found</strong>';
|
||||
}else{
|
||||
// no error, and sources found. Check the video types and output the best
|
||||
// available video player.
|
||||
var i, video,
|
||||
if(video.error)
|
||||
{
|
||||
// there was an error; display it
|
||||
container.innerHTML = ['<strong>Error: ', video.error, '</strong>'].join('');
|
||||
}else if(video.source.length < 1)
|
||||
{
|
||||
// no stream sources
|
||||
container.innerHTML = '<strong>Error: no streams found</strong>';
|
||||
}else{
|
||||
// no error, and sources found. Check the video types and output the best
|
||||
// available video player.
|
||||
var i, video,
|
||||
vtype = video.type ? video.type : 'unknown';
|
||||
foundPlayer = false,
|
||||
len = video.source.length;
|
||||
foundPlayer = false,
|
||||
len = video.source.length;
|
||||
|
||||
for(i = 0; i < len; i++)
|
||||
{
|
||||
if( hasSupport( video.source[i].type ) )
|
||||
{
|
||||
// we support this kind of video, so build it.
|
||||
buildPlayer(video.source[i], container.parentNode, video.width, video.height, vtype);
|
||||
for(i = 0; i < len; i++)
|
||||
{
|
||||
if( hasSupport( video.source[i].type ) )
|
||||
{
|
||||
// we support this kind of video, so build it.
|
||||
buildPlayer(video.source[i], container.parentNode, video.width, video.height, vtype);
|
||||
|
||||
// we've build a player, so we're done here
|
||||
foundPlayer = true;
|
||||
break; // break for() loop
|
||||
}
|
||||
}
|
||||
// we've build a player, so we're done here
|
||||
foundPlayer = true;
|
||||
break; // break for() loop
|
||||
}
|
||||
}
|
||||
|
||||
if(!foundPlayer)
|
||||
{
|
||||
// of all the streams given, none was supported (eg. no flash and HTML5 video). Display error
|
||||
buildPlayer({type: 'fallback'}, container.parentNode, video.width, video.height);
|
||||
}
|
||||
}
|
||||
if(!foundPlayer)
|
||||
{
|
||||
// of all the streams given, none was supported (eg. no flash and HTML5 video). Display error
|
||||
buildPlayer({type: 'fallback'}, container.parentNode, video.width, video.height);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue