|
@@ -1,3 +1,5 @@
|
|
|
|
+import * as lamejs from "@breezystack/lamejs";
|
|
|
|
+
|
|
function t(t, a, i) {
|
|
function t(t, a, i) {
|
|
for (var o = 0; o < i.length; o++) t.setUint8(a + o, i.charCodeAt(o));
|
|
for (var o = 0; o < i.length; o++) t.setUint8(a + o, i.charCodeAt(o));
|
|
}
|
|
}
|
|
@@ -186,10 +188,40 @@ var i = (function () {
|
|
(t.prototype.getAudioDataBlob = function (t) {
|
|
(t.prototype.getAudioDataBlob = function (t) {
|
|
// console.log("processor.getAudioDataBlob");
|
|
// console.log("processor.getAudioDataBlob");
|
|
var i, o;
|
|
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" }));
|
|
|
|
|
|
+ if (
|
|
|
|
+ null === (i = this.pcmAudioDatas) || void 0 === i ? void 0 : i.length
|
|
|
|
+ ) {
|
|
|
|
+ if ("wav" === t) {
|
|
|
|
+ return a(this.pcmAudioDatas, this.fromSampleRate, 16);
|
|
|
|
+ } else if ("mp3" === t) {
|
|
|
|
+ return this.convertWavToMp3(this.pcmAudioDatas, this.fromSampleRate);
|
|
|
|
+ } else {
|
|
|
|
+ return (o = this.pcmAudioDatas), new Blob(o, { type: "audio/pcm" });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }),
|
|
|
|
+ (t.prototype.convertWavToMp3 = function (pcmData, sampleRate) {
|
|
|
|
+ var mp3Encoder = new lamejs.Mp3Encoder(1, sampleRate, 128);
|
|
|
|
+ var mp3Data = [];
|
|
|
|
+ var sampleBlockSize = 1152;
|
|
|
|
+
|
|
|
|
+ for (let p = 0; p < pcmData.length; p++) {
|
|
|
|
+ const samples = pcmData[p];
|
|
|
|
+
|
|
|
|
+ for (var i = 0; i < samples.length; i += sampleBlockSize) {
|
|
|
|
+ var sampleChunk = samples.subarray(i, i + sampleBlockSize);
|
|
|
|
+ var mp3buf = mp3Encoder.encodeBuffer(sampleChunk);
|
|
|
|
+ if (mp3buf.length > 0) {
|
|
|
|
+ mp3Data.push(new Int8Array(mp3buf));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var mp3buf = mp3Encoder.flush();
|
|
|
|
+ if (mp3buf.length > 0) {
|
|
|
|
+ mp3Data.push(new Int8Array(mp3buf));
|
|
|
|
+ }
|
|
|
|
+ return new Blob(mp3Data, { type: "audio/mp3" });
|
|
}),
|
|
}),
|
|
t
|
|
t
|
|
);
|
|
);
|