Initial commit
This commit is contained in:
285
index.umd.js
Normal file
285
index.umd.js
Normal file
@@ -0,0 +1,285 @@
|
||||
!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, new Worker("".concat(n, "/processor.worker.js"))];
|
||||
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 (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];
|
||||
|
||||
|
||||
p = t.sent();
|
||||
if (p instanceof Error) {
|
||||
throw p; // 抛出捕获的异常到外部,便于调用者进行处理
|
||||
}else{
|
||||
// console.error(p),
|
||||
return [3, 4];
|
||||
}
|
||||
|
||||
case 4:
|
||||
return [2]
|
||||
}
|
||||
}
|
||||
))
|
||||
}
|
||||
))
|
||||
}
|
||||
,
|
||||
o.prototype.stop = function() {
|
||||
var e, t, r, o;
|
||||
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
|
||||
}()
|
||||
}
|
||||
));
|
||||
Reference in New Issue
Block a user