Файловый менеджер - Редактировать - /var/www/html/components/com_jchat/js/merger.js
Ðазад
/* (C)2021 Joomla! Extensions Store @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html */ function JChatVideoStreamMerger(c){if(!(this instanceof JChatVideoStreamMerger))return new JChatVideoStreamMerger(c);c=c||{};var b=window.AudioContext||window.webkitAudioContext;b=!(!b||!(this._audioCtx=c.audioContext||new b).createMediaStreamDestination);var a=!!document.createElement("canvas").captureStream;if(!b||!a)throw Error("Unsupported browser");this.width=c.width||640;this.height=c.height||480;this.fps=c.fps||25;this.clearRect=void 0===c.clearRect?!0:c.clearRect;this._canvas=document.createElement("canvas"); this._canvas.setAttribute("width",this.width);this._canvas.setAttribute("height",this.height);this._canvas.setAttribute("style","position:fixed; left: 110%; pointer-events: none");this._ctx=this._canvas.getContext("2d");this._streams=[];this._frameCount=0;this._audioDestination=this._audioCtx.createMediaStreamDestination();this._videoSyncDelayNode=this._audioCtx.createDelay(5);this._videoSyncDelayNode.connect(this._audioDestination);this._setupConstantNode();this.started=!1;this.result=null;this._backgroundAudioHack()} JChatVideoStreamMerger.prototype.setOutputSize=function(c,b){this.width=c;this.height=b;this._canvas.setAttribute("width",this.width);this._canvas.setAttribute("height",this.height)};JChatVideoStreamMerger.prototype.getAudioContext=function(){return this._audioCtx};JChatVideoStreamMerger.prototype.getAudioDestination=function(){return this._audioDestination};JChatVideoStreamMerger.prototype.getCanvasContext=function(){return this._ctx}; JChatVideoStreamMerger.prototype._backgroundAudioHack=function(){var c=this._audioCtx.createConstantSource(),b=this._audioCtx.createGain();b.gain.value=.001;c.connect(b);b.connect(this._audioCtx.destination);c.start()};JChatVideoStreamMerger.prototype._setupConstantNode=function(){var c=this._audioCtx.createConstantSource();c.start();var b=this._audioCtx.createGain();b.gain.value=0;c.connect(b);b.connect(this._videoSyncDelayNode)}; JChatVideoStreamMerger.prototype.updateIndex=function(c,b){"string"===typeof c&&(c={id:c});b=null==b?0:b;for(var a=0;a<this._streams.length;a++)c.id===this._streams[a].id&&(this._streams[a].index=b);this._sortStreams()};JChatVideoStreamMerger.prototype._sortStreams=function(){this._streams=this._streams.sort(function(c,b){return c.index-b.index})}; JChatVideoStreamMerger.prototype.addMediaElement=function(c,b,a){var d=this;a=a||{};a.x=a.x||0;a.y=a.y||0;a.width=a.width;a.height=a.height;a.mute=a.mute||a.muted||!1;a.oldDraw=a.draw;a.oldAudioEffect=a.audioEffect;a.draw="VIDEO"===b.tagName||"IMG"===b.tagName?function(c,f,e){a.oldDraw?a.oldDraw(c,b,e):(c.drawImage(b,a.x,a.y,null==a.width?d.width:a.width,null==a.height?d.height:a.height),e())}:null;if(!a.mute){var f=b._mediaElementSource||this.getAudioContext().createMediaElementSource(b);b._mediaElementSource= f;f.connect(this.getAudioContext().destination);var e=this.getAudioContext().createGain();f.connect(e);b.muted?(b.muted=!1,b.volume=.001,e.gain.value=1E3):e.gain.value=1;a.audioEffect=function(b,c){a.oldAudioEffect?a.oldAudioEffect(e,c):e.connect(c)};a.oldAudioEffect=null}this.addStream(c,a)}; JChatVideoStreamMerger.prototype.addStream=function(c,b){if("string"===typeof c)return this._addData(c,b);b=b||{};var a={isData:!1};a.x=b.x||0;a.y=b.y||0;a.width=b.width;a.height=b.height;a.draw=b.draw||null;a.mute=b.mute||b.muted||!1;a.audioEffect=b.audioEffect||null;a.index=null==b.index?0:b.index;a.hasVideo=0<c.getVideoTracks().length;b=null;for(var d=0;d<this._streams.length;d++)this._streams[d].id===c.id&&(b=this._streams[d].element);b||(b=document.createElement("video"),b.autoplay=!0,b.muted= !0,b.srcObject=c,b.setAttribute("style","position:fixed; left: 0px; top:0px; pointer-events: none; opacity:0;"),document.body.appendChild(b),a.mute||(a.audioSource=this._audioCtx.createMediaStreamSource(c),a.audioOutput=this._audioCtx.createGain(),a.audioOutput.gain.value=1,a.audioEffect?a.audioEffect(a.audioSource,a.audioOutput):a.audioSource.connect(a.audioOutput),a.audioOutput.connect(this._videoSyncDelayNode)));a.element=b;a.id=c.id||null;this._streams.push(a);this._sortStreams()}; JChatVideoStreamMerger.prototype.removeStream=function(c){"string"===typeof c&&(c={id:c});for(var b=0;b<this._streams.length;b++){var a=this._streams[b];c.id===a.id&&(a.audioSource&&(a.audioSource=null),a.audioOutput&&(a.audioOutput.disconnect(this._videoSyncDelayNode),a.audioOutput=null),a.element&&a.element.remove(),this._streams[b]=null,this._streams.splice(b,1),b--)}}; JChatVideoStreamMerger.prototype._addData=function(c,b){b=b||{};var a={isData:!0};a.draw=b.draw||null;a.audioEffect=b.audioEffect||null;a.id=c;a.element=null;a.index=null==b.index?0:b.index;a.audioEffect&&(a.audioOutput=this._audioCtx.createGain(),a.audioOutput.gain.value=1,a.audioEffect(null,a.audioOutput),a.audioOutput.connect(this._videoSyncDelayNode));this._streams.push(a);this._sortStreams()}; JChatVideoStreamMerger.prototype._requestAnimationFrame=function(c){var b=!1,a=setInterval(function(){!b&&document.hidden&&(b=!0,clearInterval(a),c())},1E3/this.fps);requestAnimationFrame(function(){b||(b=!0,clearInterval(a),c())})}; JChatVideoStreamMerger.prototype.start=function(){this.started=!0;this._requestAnimationFrame(this._draw.bind(this));this.result=this._canvas.captureStream(this.fps);var c=this.result.getAudioTracks()[0];c&&this.result.removeTrack(c);c=this._audioDestination.stream.getAudioTracks();this.result.addTrack(c[0])};JChatVideoStreamMerger.prototype._updateAudioDelay=function(c){this._videoSyncDelayNode.delayTime.setValueAtTime(c/1E3,this._audioCtx.currentTime)}; JChatVideoStreamMerger.prototype._draw=function(){var c=this;if(this.started){this._frameCount++;var b=null;0===this._frameCount%60&&(b=performance.now());var a=this._streams.length,d=function(){a--;if(0>=a){if(0===c._frameCount%60){var f=performance.now();c._updateAudioDelay(f-b)}c._requestAnimationFrame(c._draw.bind(c))}};this.clearRect&&this._ctx.clearRect(0,0,this.width,this.height);this._streams.forEach(function(a){a.draw?a.draw(c._ctx,a.element,d):(!a.isData&&a.hasVideo&&c._ctx.drawImage(a.element, a.x,a.y,null==a.width?c.width:a.width,null==a.height?c.height:a.height),d())});0===this._streams.length&&d()}};JChatVideoStreamMerger.prototype.destroy=function(){this.started=!1;this._ctx=this._canvas=null;this._streams.forEach(function(c){c.element&&c.element.remove()});this._streams=[];this._audioCtx.close();this._videoSyncDelayNode=this._audioDestination=this._audioCtx=null;this.result.getTracks().forEach(function(c){c.stop()});this.result=null};
| ver. 1.1 | |
.
| PHP 8.4.18 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка