!(function (e, t) { 'object' == typeof exports && 'undefined' != typeof module ? (module.exports = t()) : 'function' == typeof define && define.amd ? define(t) : ((e = 'undefined' != typeof globalThis ? globalThis : e || self).RecorderManager = t()); })(this, function () { 'use strict'; function e(e, t, r, o) { return new (r || (r = Promise))(function (n, a) { function i(e) { try { u(o.next(e)); } catch (e) { a(e); } } function s(e) { try { u(o.throw(e)); } catch (e) { a(e); } } function u(e) { var t; e.done ? n(e.value) : ((t = e.value), t instanceof r ? t : new r(function (e) { e(t); })).then(i, s); } u((o = o.apply(e, t || [])).next()); }); } function t(e, t) { var r, o, n, a, i = { label: 0, sent: function () { if (1 & n[0]) throw n[1]; return n[1]; }, trys: [], ops: [], }; return ( (a = { next: s(0), throw: s(1), return: s(2) }), 'function' == typeof Symbol && (a[Symbol.iterator] = function () { return this; }), a ); function s(s) { return function (u) { return (function (s) { if (r) throw new TypeError('Generator is already executing.'); for (; a && ((a = 0), s[0] && (i = 0)), i; ) try { if ( ((r = 1), o && (n = 2 & s[0] ? o.return : s[0] ? o.throw || ((n = o.return) && n.call(o), 0) : o.next) && !(n = n.call(o, s[1])).done) ) return n; switch (((o = 0), n && (s = [2 & s[0], n.value]), s[0])) { case 0: case 1: n = s; break; case 4: return i.label++, { value: s[1], done: !1 }; case 5: i.label++, (o = s[1]), (s = [0]); continue; case 7: (s = i.ops.pop()), i.trys.pop(); continue; default: if ( !((n = i.trys), (n = n.length > 0 && n[n.length - 1]) || (6 !== s[0] && 2 !== s[0])) ) { i = 0; continue; } if (3 === s[0] && (!n || (s[1] > n[0] && s[1] < n[3]))) { i.label = s[1]; break; } if (6 === s[0] && i.label < n[1]) { (i.label = n[1]), (n = s); break; } if (n && i.label < n[2]) { (i.label = n[2]), i.ops.push(s); break; } n[2] && i.ops.pop(), i.trys.pop(); continue; } s = t.call(e, i); } catch (e) { (s = [6, e]), (o = 0); } finally { r = n = 0; } if (5 & s[0]) throw s[1]; return { value: s[0] ? s[1] : void 0, done: !0 }; })([s, u]); }; } } function r() { var e, t = navigator, r = t.getUserMedia || t.webkitGetUserMedia || t.mozGetUserMedia; return (null === (e = t.mediaDevices) || void 0 === e ? void 0 : e.getUserMedia) ? t.mediaDevices.getUserMedia({ audio: !0, video: !1 }) : r ? new Promise(function (e, t) { r.call( navigator, { audio: !0, video: !1 }, function (t) { e(t); }, function (e) { t(e); }, ); }) : Promise.reject(new Error('不支持录音')); } var o; function n(r, n) { return e(this, void 0, void 0, function () { var e; return t(this, function (t) { switch (t.label) { case 0: return [3, 2]; case 1: return t.sent(), [2, new AudioWorkletNode(r, 'processor-worklet')]; case 2: return (e = o) ? [3, 4] : [ 4, (function () { let worker; if (/http/.test(n)) { const workerBlob = new Blob( ['importScripts(' + JSON.stringify(n + '/processor.worker.js') + ')'], { type: 'application/javascript' }, ); const blobUrl = window.URL.createObjectURL(workerBlob); worker = new Worker(blobUrl); worker.__blobUrl = blobUrl; } else { worker = new Worker(''.concat(n, '/processor.worker.js')); } return worker; })(), ]; case 3: (e = t.sent()), (t.label = 4); case 4: return [2, { port: (o = e) }]; } }); }); } return (function () { function o(e) { (this.processorPath = e), (this.audioBuffers = []); } return ( (o.prototype.start = function (o) { var a, i = o.sampleRate, s = o.frameSize, u = o.arrayBufferType; return e(this, void 0, void 0, function () { var e, o, c, l, f, d, p; return t(this, function (t) { switch (t.label) { case 0: return t.trys.push([0, 3, , 4]), ((e = this).audioBuffers = []), [4, r()]; case 1: return ( (o = t.sent()), (this.audioTracks = o.getAudioTracks()), (c = (function (e, t) { var r; try { (r = new (window.AudioContext || window.webkitAudioContext)({ sampleRate: t, })).createMediaStreamSource(e); } catch (t) { null == r || r.close(), (r = new (window.AudioContext || window.webkitAudioContext)()).createMediaStreamSource(e); } return r; })(o, i)), (this.audioContext = c), (l = c.createMediaStreamSource(o)), [4, n(c, this.processorPath)] ); case 2: return ( (f = t.sent()), (this.audioWorklet = f), f.port.postMessage({ type: 'init', data: { frameSize: s, toSampleRate: i || c.sampleRate, fromSampleRate: c.sampleRate, arrayBufferType: u || 'short16', }, }), (f.port.onmessage = function (t) { var r = t.data, o = r.frameBuffer, n = r.isLastFrame; if (f.port.__blobUrl) { window.URL.revokeObjectURL(f.port.__blobUrl); f.port.__blobUrl = null; } if (s && e.onFrameRecorded) if (null == o ? void 0 : o.byteLength) for (var a = 0; a < o.byteLength; ) e.onFrameRecorded({ isLastFrame: n && a + s >= o.byteLength, frameBuffer: t.data.frameBuffer.slice(a, a + s), }), (a += s); else e.onFrameRecorded(t.data); e.onStop && (o && e.audioBuffers.push(o), n && e.onStop(e.audioBuffers)); }), ((d = c.createScriptProcessor(0, 1, 1)).onaudioprocess = function (e) { f.port.postMessage({ type: 'message', data: e.inputBuffer.getChannelData(0) }); }), l.connect(d), d.connect(c.destination), c.resume(), null === (a = this.onStart) || void 0 === a || a.call(this), [3, 4] ); case 3: return (p = t.sent()), console.error(p), [3, 4]; case 4: return [2]; } }); }); }), (o.prototype.stop = function () { var e, t, r, o; if (this.audioWorklet && this.audioWorklet.port && this.audioWorklet.port.__blobUrl) { window.URL.revokeObjectURL(this.audioWorklet.port.__blobUrl); this.audioWorklet.port.__blobUrl = null; } null === (e = this.audioWorklet) || void 0 === e || e.port.postMessage({ type: 'stop' }), null === (t = this.audioTracks) || void 0 === t || t[0].stop(), 'running' === (null === (r = this.audioContext) || void 0 === r ? void 0 : r.state) && (null === (o = this.audioContext) || void 0 === o || o.close()); }), o ); })(); });