UNPKG

chrome-video-capturestream-fix

Version:

Fixes possible crashes caused by calling captureStream on a HTMLVideoElement with its src being a MediaSource in chrome.

3 lines (2 loc) 1.27 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.VideoCaptureStreamFix={})}(this,function(e){"use strict";const t=24;function n(e,n){const a=o(e,n),r=n.framerate||t,c=a.canvas.captureStream(r),d=i(e).getAudioTracks()[0];return d&&c.addTrack(d),c.startVideo=a.startUpdating,c.stopVideo=a.stopUpdating,c}function o(e,n={}){const o=n.width||e.videoWidth,a=n.height||e.videoHeight,i=document.createElement("canvas");i.width=o,i.height=a;const r=i.getContext("2d"),c=n.framerate||t;function d(){r.drawImage(e,0,0,o,a)}let s;function u(){s=setInterval(d,1e3/c)}return u(),{videoEl:e,canvas:i,stopUpdating:function(){clearInterval(s)},startUpdating:u}}const a=new WeakMap;function i(e){let t=a.get(e);if(t)return t.clone();const n=new AudioContext,o=n.createMediaElementSource(e),i=n.createMediaStreamDestination();return o.connect(i),o.connect(n.destination),t=i.stream,a.set(e,t),t.clone()}e.polyfill=function(){HTMLVideoElement.prototype.captureStream=function(e={}){return n(this,e)}},e.captureStream=n,e.DEFAULT_FRAMERATE=t,e.createVideoCanvas=o,e.getAudioStream=i,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=videoCaptureStreamFix.umd.min.js.map