123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- function t(t, a, i) {
- for (var o = 0; o < i.length; o++) t.setUint8(a + o, i.charCodeAt(o));
- }
- function a(a, i, o) {
- var e = (function (a, i, o, e, s) {
- var u = a.reduce(function (t, a) {
- return t + a.byteLength;
- }, 0),
- n = new ArrayBuffer(44 + u),
- r = new DataView(n),
- h = o,
- d = 0;
- return (
- t(r, d, "RIFF"),
- (d += 4),
- r.setUint32(d, 36 + u, !0),
- t(r, (d += 4), "WAVE"),
- t(r, (d += 4), "fmt "),
- (d += 4),
- r.setUint32(d, 16, !0),
- (d += 4),
- r.setUint16(d, 1, !0),
- (d += 2),
- r.setUint16(d, h, !0),
- (d += 2),
- r.setUint32(d, i, !0),
- (d += 4),
- r.setUint32(d, h * i * (e / 8), !0),
- (d += 4),
- r.setUint16(d, h * (e / 8), !0),
- (d += 2),
- r.setUint16(d, e, !0),
- t(r, (d += 2), "data"),
- (d += 4),
- r.setUint32(d, u, !0),
- (d += 4),
- a.forEach(function (t) {
- for (var a = new DataView(t.buffer), i = 0; i < t.byteLength; )
- r.setUint8(d, a.getUint8(i)), d++, i++;
- }),
- r
- );
- })(a, i || 16e3, 1, o || 16);
- return new Blob([e], { type: "audio/wav" });
- }
- var i = (function () {
- function t(t) {
- (this.toSampleRate = 22050),
- (this.resumePlayDuration = 1e3),
- (this.fromSampleRate = 16e3),
- (this.isAudioDataEnded = !1),
- (this.status = "uninit"),
- (this.audioDatas = []),
- (this.pcmAudioDatas = []),
- (this.audioDataOffset = 0),
- // (this.processor = new Worker("".concat(t, "/processor.worker.js")));
- (this.processor = new Worker("/admin/processor.worker.js"));
- }
- return (
- (t.prototype.postMessage = function (t) {
- var a = t.type,
- i = t.data,
- o = t.isLastData;
- "uninit" !== this.status &&
- (this.processor.postMessage({ type: a, data: i }),
- (this.isAudioDataEnded = o));
- }),
- (t.prototype.playAudio = function () {
- var t = this;
- if ((clearTimeout(this.playAudioTime), this.audioContext)) {
- for (
- var a = 0, i = this.audioDataOffset;
- i < this.audioDatas.length;
- i++
- )
- a += this.audioDatas[i].length;
- if (!a)
- return void (
- "play" === this.status &&
- (this.isAudioDataEnded || this.resumePlayDuration <= 0
- ? this.stop()
- : (this.playAudioTime = setTimeout(function () {
- t.playAudio();
- }, this.resumePlayDuration)))
- );
- for (
- var o = this.audioContext.createBuffer(1, a, this.toSampleRate),
- e = o.getChannelData(0),
- s = this.audioDatas[this.audioDataOffset],
- u = 0;
- s;
- ) {
- if (((this.audioDataOffset += 1), o.copyToChannel))
- o.copyToChannel(s, 0, u), (u += s.length);
- else for (i = 0; i < s.length; i++) e[i] = s[i];
- s = this.audioDatas[this.audioDataOffset];
- }
- var n = this.audioContext.createBufferSource();
- (this.bufferSource = n),
- (n.buffer = o),
- n.connect(this.audioContext.destination),
- n.start(),
- (n.onended = function (a) {
- "play" === t.status &&
- (t.audioDatas.length
- ? t.playAudio()
- : t.isAudioDataEnded || t.resumePlayDuration <= 0
- ? t.stop()
- : (t.playAudioTime = setTimeout(function () {
- t.playAudio();
- }, t.resumePlayDuration)));
- });
- }
- }),
- (t.prototype.reset = function () {
- var t;
- (this.processor.onmessage = null),
- (this.audioDataOffset = 0),
- (this.audioDatas = []),
- (this.pcmAudioDatas = []),
- (this.status = "uninit"),
- (this.isAudioDataEnded = !1),
- clearTimeout(this.playAudioTime);
- try {
- null === (t = this.bufferSource) || void 0 === t || t.stop();
- } catch (t) {
- console.log(t);
- }
- }),
- (t.prototype.start = function (t) {
- var a = this,
- i = void 0 === t ? {} : t,
- o = i.autoPlay,
- e = void 0 === o || o,
- s = i.sampleRate,
- u = void 0 === s ? 16e3 : s,
- n = i.resumePlayDuration,
- r = void 0 === n ? 1e3 : n;
- this.reset(), (this.status = "init"), (this.resumePlayDuration = r);
- var h = u,
- d = Math.max(h, 22050);
- (d = Math.min(d, 96e3)),
- (this.fromSampleRate = h),
- (this.toSampleRate = d),
- this.processor.postMessage({
- type: "init",
- data: { fromSampleRate: h, toSampleRate: d },
- }),
- (this.processor.onmessage = function (t) {
- // console.log("processor.onmessage");
- // console.log(t.data);
- var i = t.data,
- o = i.audioData,
- s = i.pcmAudioData;
- a.audioDatas.push(o),
- a.pcmAudioDatas.push(s),
- 1 === a.audioDatas.length && e && "init" === a.status && a.play();
- });
- }),
- (t.prototype.play = function () {
- var t;
- this.audioContext ||
- ((this.audioContext = new (window.AudioContext ||
- window.webkitAudioContext)()),
- this.audioContext.resume()),
- this.audioContext &&
- ((this.status = "play"),
- null === (t = this.onPlay) || void 0 === t || t.call(this),
- this.playAudio());
- }),
- (t.prototype.stop = function () {
- var t, a;
- (this.audioDataOffset = 0),
- (this.status = "stop"),
- clearTimeout(this.playAudioTime);
- try {
- null === (t = this.bufferSource) || void 0 === t || t.stop(),
- null === (a = this.onStop) ||
- void 0 === a ||
- a.call(this, this.audioDatas);
- } catch (t) {
- console.log(t);
- }
- }),
- (t.prototype.getAudioDataBlob = function (t) {
- // console.log("processor.getAudioDataBlob");
- var i, o;
- if (null === (i = this.pcmAudioDatas) || void 0 === i ? void 0 : i.length)
- return "wav" === t
- ? a(this.pcmAudioDatas, this.fromSampleRate, 16)
- : ((o = this.pcmAudioDatas), new Blob(o, { type: "audio/pcm" }));
- }),
- t
- );
- })();
- export { i as default };
|