UNPKG

aframe-video-shader

Version:
1 lines 13.2 kB
!function(e){function t(n){if(i[n])return i[n].exports;var a=i[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){"use strict";function n(e,t){return{status:"error",src:t,message:e,timestamp:Date.now()}}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=i(2);if("undefined"==typeof AFRAME)throw"Component attempted to register before AFRAME was available.";var o=AFRAME.utils.srcLoader.parseUrl,u=AFRAME.utils.debug;u.enable("shader:video:warn");var s=u("shader:video:warn"),d=u("shader:video:debug"),c={};AFRAME.registerShader("video",{schema:{color:{type:"color"},fog:{"default":!0},src:{"default":null},autoplay:{"default":!0},preload:{"default":!0},muted:{"default":!0},loop:{"default":!0},fps:{"default":60},volume:{"default":void 0},pause:{"default":!1}},init:function(e){return d("init",e),this.__cnv=document.createElement("canvas"),this.__cnv.width=2,this.__cnv.height=2,this.__ctx=this.__cnv.getContext("2d"),this.__texture=new THREE.Texture(this.__cnv),this.__reset(),this.material=new THREE.MeshBasicMaterial({map:this.__texture}),this.el.sceneEl.addBehavior(this),this.material},update:function(e){return d("update",e),this.__updateMaterial(e),this.__updateTexture(e),this.material},tick:function(e){d("tick"),!this.__paused&&this.__canvasVideo&&this.__canvasVideo.tick()},__updateMaterial:function(e){var t=this.material,i=this.__getMaterialData(e);Object.keys(i).forEach(function(e){t[e]=i[e]})},__getMaterialData:function(e){return{fog:e.fog,color:new THREE.Color(e.color)}},__setTexure:function(e){d("__setTexure",e),"error"===e.status?(s("Error: "+e.message+"\nsrc: "+e.src),this.__reset()):"success"===e.status&&e.src!==this.__textureSrc&&(this.__reset(),this.__ready(e))},__updateTexture:function(e){var t=e.src,i=e.autoplay,n=(e.muted,e.volume,e.loop,e.fps),a=e.pause;"boolean"==typeof i?this.__autoplay=i:"undefined"==typeof i&&(this.__autoplay=this.schema.autoplay["default"]),this.__autoplay&&this.__frames&&this.play(),"boolean"==typeof preload?this.__preload=preload:"undefined"==typeof preload&&(this.__preload=this.schema.preload["default"]),a?this.pause():this.play(),this.__muted=!0,this.__volume=void 0,this.__loop=!0,this.__fps=n||this.schema.fps["default"],t?this.__validateSrc(t,this.__setTexure.bind(this)):this.__reset()},__validateSrc:function(e,t){var i=o(e);if(i)return void this.__getVideoSrc(i,t);var r=void 0,u=this.__validateAndGetQuerySelector(e);if(u&&"object"===("undefined"==typeof u?"undefined":a(u))){if(u.error)r=u.error;else{var s=u.tagName.toLowerCase();"video"===s?(e=u.src,this.__getVideoSrc(e,t,u)):r="img"===s?"For <"+s+"> element, please use `shader:flat`":"For <"+s+"> element, please use `aframe-html-shader`"}r&&!function(){var i=c[e],a=n(r,e);i&&i.callbacks?i.callbacks.forEach(function(e){return e(a)}):t(a),c[e]=a}()}},__getVideoSrc:function(e,t,i){if(e!==this.__textureSrc){var o=c[e];if(o&&o.callbacks){if(o.src)return void t(o);if(o.callbacks)return void o.callbacks.push(t)}else o=c[e]={callbacks:[]},o.callbacks.push(t);var u={autoplay:this.__autoplay,preload:this.__preload,muted:this.__muted,volume:this.__volume,loop:this.__loop,fps:this.__fps,canvas:this.__cnv,context:this.__ctx,render:this.__render.bind(this),element:i};(0,r.inlineVideo)(e,u,function(t,i){if(t){var r=function(){var i=n(t,e);return o.callbacks&&(o.callbacks.forEach(function(e){return e(i)}),c[e]=i),{v:void 0}}();if("object"===("undefined"==typeof r?"undefined":a(r)))return r.v}var u={status:"success",src:e,canvasVideo:i,timestamp:Date.now()};o.callbacks&&(o.callbacks.forEach(function(e){return e(u)}),c[e]=u)})}},__validateAndGetQuerySelector:function(e){try{var t=document.querySelector(e);return t?t:{error:"No element was found matching the selector"}}catch(i){return{error:"no valid selector"}}},__addPublicFunctions:function(){this.el.shader={play:this.play.bind(this),pause:this.pause.bind(this),togglePlayback:this.togglePlayback.bind(this),paused:this.paused.bind(this),nextFrame:this.nextFrame.bind(this)}},pause:function(){d("pause"),this.__paused=!0,this.__canvasVideo&&this.__canvasVideo.pause()},play:function(){d("play"),this.__paused=!1,this.__canvasVideo&&this.__canvasVideo.play()},togglePlayback:function(){this.paused()?this.play():this.pause()},paused:function(){return this.__paused},__clearCanvas:function(){this.__ctx.clearRect(0,0,this.__width,this.__height),this.__texture.needsUpdate=!0},__draw:function(e){this.__ctx.drawImage(e,0,0,this.__width,this.__height),this.__texture.needsUpdate=!0},__render:function(e){this.__clearCanvas(),this.__draw(e)},__ready:function(e){var t=e.src,i=e.canvasVideo;d("__ready"),this.__textureSrc=t,this.__width=this.__cnv.width,this.__height=this.__cnv.height,this.__canvasVideo=i,this.__autoplay?this.play():this.pause()},__reset:function(){this.pause(),this.__clearCanvas(),this.__textureSrc=null}})},function(e,t){function i(){d=!1,o.length?s=o.concat(s):c=-1,s.length&&n()}function n(){if(!d){var e=setTimeout(i);d=!0;for(var t=s.length;t;){for(o=s,s=[];++c<t;)o&&o[c].run();c=-1,t=s.length}o=null,d=!1,clearTimeout(e)}}function a(e,t){this.fun=e,this.array=t}function r(){}var o,u=e.exports={},s=[],d=!1,c=-1;u.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)t[i-1]=arguments[i];s.push(new a(e,t)),1!==s.length||d||setTimeout(n,0)},a.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=r,u.addListener=r,u.once=r,u.off=r,u.removeListener=r,u.removeAllListeners=r,u.emit=r,u.binding=function(e){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}var a=i(6),r=n(a),o=i(3),u=n(o),s=AFRAME.utils.debug;s.enable("shader:video:warn");var d=s("shader:video:warn"),c=(s("shader:video:debug"),/i(Pad|Phone)/i.test(navigator.userAgent));t.inlineVideo=function(e,t,i){function n(e){if(e)return d(e),void i("Somehow there is error during loading video");h.width=THREE.Math.nearestPowerOfTwo(_.videoWidth),h.height=THREE.Math.nearestPowerOfTwo(_.videoHeight),c&&(_.addEventListener("timeupdate",l,!1),x&&x.addEventListener("ended",function(){v&&(x.currentTime=0)},!1)),b=_.duration;var t={play:a,pause:o,tick:s,canvas:h,video:_,audio:x,fallback:c};i(null,t)}function a(){g=Date.now(),x&&x.play(),c||_.play()}function o(){x&&x.pause(),c||_.pause()}function s(){if(!c)return l();var e=Date.now();y=(e-g)/1e3,y>=1e3/f/1e3&&(c&&(x?_.currentTime=x.currentTime:_.currentTime=_.currentTime+y),g=e),c&&!x&&Math.abs(_.currentTime-b)<.1&&v&&(_.currentTime=0)}function l(){p(_)}var v=(t.autoplay,t.preload,t.muted,t.loop),f=t.fps,h=t.canvas,p=(t.context,t.render),m=t.element,_=m||document.createElement("video"),g=Date.now(),y=0,b=1/0,x=void 0;c?(t.muted||(x=document.createElement("audio"),t.autoplay=!1),(0,r["default"])([function(i){u["default"].video(e,Object.assign({},t,{muted:!0,element:_}),i)},function(i){u["default"].audio(e,Object.assign({},t,{element:x}),i)}],n)):u["default"].video(e,Object.assign({},t,{element:_}),n)}},function(e,t,i){(function(t){"use strict";function n(){}function a(e,i,a,o){function u(){d.addEventListener("canplay",function(){o(null,d),o=n},!1),d.addEventListener("error",function(e){o(e),o=n},!1),d.addEventListener("readystatechange",s,!1),d.load(),s()}function s(){d.readyState>d.HAVE_FUTURE_DATA&&(o(null,d),o=n)}"function"==typeof a&&(o=a,a={}),o=o||n,a=a||{},Array.isArray(i)||(i=[i]);var d=a.element||document.createElement(e);return a.loop&&d.setAttribute("loop",!0),a.muted&&d.setAttribute("muted","muted"),a.autoplay&&d.setAttribute("autoplay","autoplay"),a.preload&&d.setAttribute("preload",a.preload),"undefined"!=typeof a.volume&&d.setAttribute("volume",a.volume),d.setAttribute("crossorigin","anonymous"),d.setAttribute("webkit-playsinline",""),i.forEach(function(e){d.appendChild(r(e))}),t.nextTick(u),d}var r=i(4);e.exports.video=a.bind(null,"video"),e.exports.audio=a.bind(null,"audio")}).call(t,i(1))},function(e,t,i){"use strict";function n(e,t){var i=document.createElement("source");return i.src=e,t||(t=a(e)),i.type=t,i}function a(e){var t=r(e);if(0===t.indexOf(".")&&(t=u[t.substring(1).toLowerCase()]),!t)throw new TypeError("could not determine mime-type from source: "+e);return t}var r=i(7).extname,o=i(5),u={};Object.keys(o).forEach(function(e){var t=o[e];t.forEach(function(t){u[t]=e})}),e.exports=n},function(e,t){e.exports={"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp4":["mp4a","m4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-wav":["wav"],"audio/xm":["xm"],"video/3gpp":["3gp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"]}},function(e,t,i){(function(t){e.exports=function(e,i){function n(e){function n(){i&&i(e,r),i=null}s?t.nextTick(n):n()}function a(e,t,i){r[e]=i,(0===--o||t)&&n(t)}var r,o,u,s=!0;Array.isArray(e)?(r=[],o=e.length):(u=Object.keys(e),r={},o=u.length),o?u?u.forEach(function(t){e[t](function(e,i){a(t,e,i)})}):e.forEach(function(e,t){e(function(e,i){a(t,e,i)})}):n(null),s=!1}}).call(t,i(1))},function(e,t,i){(function(e){function i(e,t){for(var i=0,n=e.length-1;n>=0;n--){var a=e[n];"."===a?e.splice(n,1):".."===a?(e.splice(n,1),i++):i&&(e.splice(n,1),i--)}if(t)for(;i--;i)e.unshift("..");return e}function n(e,t){if(e.filter)return e.filter(t);for(var i=[],n=0;n<e.length;n++)t(e[n],n,e)&&i.push(e[n]);return i}var a=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,r=function(e){return a.exec(e).slice(1)};t.resolve=function(){for(var t="",a=!1,r=arguments.length-1;r>=-1&&!a;r--){var o=r>=0?arguments[r]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,a="/"===o.charAt(0))}return t=i(n(t.split("/"),function(e){return!!e}),!a).join("/"),(a?"/":"")+t||"."},t.normalize=function(e){var a=t.isAbsolute(e),r="/"===o(e,-1);return e=i(n(e.split("/"),function(e){return!!e}),!a).join("/"),e||a||(e="."),e&&r&&(e+="/"),(a?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(n(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,i){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var i=e.length-1;i>=0&&""===e[i];i--);return t>i?[]:e.slice(t,i-t+1)}e=t.resolve(e).substr(1),i=t.resolve(i).substr(1);for(var a=n(e.split("/")),r=n(i.split("/")),o=Math.min(a.length,r.length),u=o,s=0;o>s;s++)if(a[s]!==r[s]){u=s;break}for(var d=[],s=u;s<a.length;s++)d.push("..");return d=d.concat(r.slice(u)),d.join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){var t=r(e),i=t[0],n=t[1];return i||n?(n&&(n=n.substr(0,n.length-1)),i+n):"."},t.basename=function(e,t){var i=r(e)[2];return t&&i.substr(-1*t.length)===t&&(i=i.substr(0,i.length-t.length)),i},t.extname=function(e){return r(e)[3]};var o="b"==="ab".substr(-1)?function(e,t,i){return e.substr(t,i)}:function(e,t,i){return 0>t&&(t=e.length+t),e.substr(t,i)}}).call(t,i(1))}]);