mediaelement
Version:
One file. Any browser. Same UI.
12 lines • 3.42 kB
JavaScript
/*!
* MediaElement.js
* http://www.mediaelementjs.com/
*
* Wrapper that mimics native HTML5 MediaElement (audio and video)
* using a variety of technologies (pure JavaScript, Flash, iframe)
*
* Copyright 2010-2017, John Dyer (http://j.hn/)
* License: MIT
*
*/
function getQueryStringValue(e){return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]"+encodeURIComponent(e).replace(/[\.\+\*]/g,"\\$&")+"(?:\\=([^&]*))?)?.*$","i"),"$1"))}function updateUrlParameter(e,r,t){var n=e.indexOf("#"),o=-1===n?"":e.substr(n);e=-1===n?e:e.substr(0,n);var l=new RegExp("([?&])"+r+"=.*?(&|$)","i"),a=-1!==e.indexOf("?")?"&":"?";return t?e=e.match(l)?e.replace(l,"$1"+r+"="+t+"$2"):e+a+r+"="+t:("?"===(e=e.replace(new RegExp("([?&]?)"+r+"=[^&]*","i"),"")).slice(-1)&&(e=e.slice(0,-1)),-1===e.indexOf("?")&&(e=e.replace(/&/,"?"))),e+o}var lang=getQueryStringValue("lang")||"en",stretching=getQueryStringValue("stretching")||"auto",languageSelector=document.querySelector("select[name=lang]"),stretchingSelector=document.querySelector("select[name=stretching]"),sourcesSelector=document.querySelectorAll("select[name=sources]"),sourcesTotal=sourcesSelector.length;languageSelector.value=lang,languageSelector.addEventListener("change",function(){window.location.href=updateUrlParameter(window.location.href,"lang",languageSelector.value)}),stretchingSelector.value=stretching,stretchingSelector.addEventListener("change",function(){window.location.href=updateUrlParameter(window.location.href,"stretching",stretchingSelector.value)});for(var i=0;i<sourcesTotal;i++)sourcesSelector[i].addEventListener("change",function(){var e=this.closest(".players").querySelector(".mejs__container").id,r=mejs.players[e];r.setSrc(this.value.replace("&","&")),r.load(),mejs.Features.isiOS||mejs.Features.isAndroid||r.play();var t=document.getElementById(r.media.id+"-rendername");t.querySelector(".src").innerHTML='<a href="'+this.value+'" target="_blank">'+this.value+"</a>",t.querySelector(".renderer").innerHTML=r.media.rendererName,t.querySelector(".error").innerHTML=""}),mejs.Features.isiOS&&(sourcesSelector[i].querySelector('option[value^="rtmp"]').disabled=!0,sourcesSelector[i].querySelector('option[value$="webm"]')&&(sourcesSelector[i].querySelector('option[value$="webm"]').disabled=!0),sourcesSelector[i].querySelector('option[value$=".mpd"]')&&(sourcesSelector[i].querySelector('option[value$=".mpd"]').disabled=!0),sourcesSelector[i].querySelector('option[value$=".ogg"]')&&(sourcesSelector[i].querySelector('option[value$=".ogg"]').disabled=!0),sourcesSelector[i].querySelector('option[value$=".flv"]')&&(sourcesSelector[i].querySelector('option[value*=".flv"]').disabled=!0));document.addEventListener("DOMContentLoaded",function(){mejs.i18n.language(lang);var e,r=document.querySelectorAll("video, audio"),t=r.length;for(e=0;e<t;e++)new MediaElementPlayer(r[e],{stretching:stretching,pluginPath:"../build/",success:function(r){var t=document.getElementById(r.id+"-rendername");r.addEventListener("loadedmetadata",function(){var e=r.originalNode.getAttribute("src").replace("&","&");null!=e&&(t.querySelector(".src").innerHTML='<a href="'+e+'" target="_blank">'+e+"</a>",t.querySelector(".renderer").innerHTML=r.rendererName,t.querySelector(".error").innerHTML="")}),r.addEventListener("error",function(e){t.querySelector(".error").innerHTML="<strong>Error</strong>: "+e.message})}})});