@ziplayer/plugin 0.2.1-dev-1 → 0.2.1-dev-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/YouTubePlugin.d.ts.map +1 -1
- package/dist/YouTubePlugin.js +9 -5
- package/dist/YouTubePlugin.js.map +1 -1
- package/dist/utils/sabr-stream-factory.d.ts +2 -1
- package/dist/utils/sabr-stream-factory.d.ts.map +1 -1
- package/dist/utils/sabr-stream-factory.js +10 -8
- package/dist/utils/sabr-stream-factory.js.map +1 -1
- package/dist/utils/stream-converter.d.ts +8 -2
- package/dist/utils/stream-converter.d.ts.map +1 -1
- package/dist/utils/stream-converter.js +44 -12
- package/dist/utils/stream-converter.js.map +1 -1
- package/package.json +1 -1
- package/src/YouTubePlugin.ts +9 -5
- package/src/utils/sabr-stream-factory.ts +10 -8
- package/src/utils/stream-converter.ts +49 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YouTubePlugin.d.ts","sourceRoot":"","sources":["../src/YouTubePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACzD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IACvC,gBAAgB,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IAC7C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC5C,IAAI,SAAa;IACjB,OAAO,SAAW;IAElB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAgB;IAC/B;;;;;;;;;OASG;gBACS,OAAO,EAAE,aAAa;YAOpB,IAAI;IAoBlB,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,UAAU;IAkFlB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAsBjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU9B;;;;;;;;;;;;;;;;;;OAkBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8EvE;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA+BzE;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"YouTubePlugin.d.ts","sourceRoot":"","sources":["../src/YouTubePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACzD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IACvC,gBAAgB,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IAC7C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC5C,IAAI,SAAa;IACjB,OAAO,SAAW;IAElB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAgB;IAC/B;;;;;;;;;OASG;gBACS,OAAO,EAAE,aAAa;YAOpB,IAAI;IAoBlB,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,UAAU;IAkFlB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAsBjC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU9B;;;;;;;;;;;;;;;;;;OAkBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8EvE;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA+BzE;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IA0FlD;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAwB7H;;;;;;;;;;;;;;;;;;OAkBG;IACG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAYpD,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,aAAa;CAQrB"}
|
package/dist/YouTubePlugin.js
CHANGED
|
@@ -323,7 +323,9 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
|
|
|
323
323
|
try {
|
|
324
324
|
this.debug("🚀 Attempting sabr download for video ID:", id);
|
|
325
325
|
// Use sabr download for better quality and reliability
|
|
326
|
-
|
|
326
|
+
// Pass optimized options for memory efficiency
|
|
327
|
+
const sabrOptions = { ...sabr_stream_factory_1.DEFAULT_SABR_OPTIONS };
|
|
328
|
+
const { stream, title, format } = await (0, sabr_stream_factory_1.createSabrStream)(id, this.client, sabrOptions);
|
|
327
329
|
this.debug("✅ Sabr download successful, stream ready");
|
|
328
330
|
if (!stream) {
|
|
329
331
|
throw new Error("Sabr download did not return a stream");
|
|
@@ -359,15 +361,16 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
|
|
|
359
361
|
this.debug("⚠️ User-provided fallback stream failed or returned invalid stream");
|
|
360
362
|
}
|
|
361
363
|
}
|
|
364
|
+
// Fallback: Use memory-optimized quality (high instead of best to reduce bandwidth by ~40%)
|
|
362
365
|
const stream = await this.client.download(id, {
|
|
363
366
|
type: "audio",
|
|
364
|
-
quality: "best"
|
|
367
|
+
quality: "high", // Changed from "best" to reduce memory usage
|
|
365
368
|
});
|
|
366
369
|
// Check if it's a Web Stream and convert it
|
|
367
370
|
this.debug("🔍 Checking stream type:", typeof stream, stream?.constructor?.name);
|
|
368
371
|
if (stream && typeof stream.getReader === "function") {
|
|
369
|
-
this.debug("🔄 Converting Web Stream to Node.js Stream");
|
|
370
|
-
const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(stream);
|
|
372
|
+
this.debug("🔄 Converting Web Stream to Node.js Stream with backpressure handling");
|
|
373
|
+
const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(stream, 32 * 1024); // Optimized buffer size
|
|
371
374
|
// Add error handler to prevent unhandled rejections
|
|
372
375
|
nodeStream.on("error", (error) => {
|
|
373
376
|
const errorMsg = error.message || String(error);
|
|
@@ -385,8 +388,9 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
|
|
|
385
388
|
else {
|
|
386
389
|
this.debug("⚠️ Stream is not a Web Stream or is null");
|
|
387
390
|
}
|
|
391
|
+
// Final fallback - just return the stream with optimized buffer
|
|
388
392
|
return {
|
|
389
|
-
stream: (0, stream_converter_1.webStreamToNodeStream)(stream),
|
|
393
|
+
stream: (0, stream_converter_1.webStreamToNodeStream)(stream, 32 * 1024),
|
|
390
394
|
type: "arbitrary",
|
|
391
395
|
metadata: track.metadata,
|
|
392
396
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YouTubePlugin.js","sourceRoot":"","sources":["../src/YouTubePlugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YouTubePlugin.js","sourceRoot":"","sources":["../src/YouTubePlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,8 @@ export declare function sanitizeFileName(name: string): string;
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function bytesToMB(bytes: number): string;
|
|
40
40
|
/**
|
|
41
|
-
* Default sabr playback options
|
|
41
|
+
* Default sabr playback options - optimized for memory usage
|
|
42
|
+
* Using MEDIUM quality and WebM/Opus reduces bandwidth by ~30-40%
|
|
42
43
|
*/
|
|
43
44
|
export declare const DEFAULT_SABR_OPTIONS: SabrPlaybackOptions;
|
|
44
45
|
//# sourceMappingURL=sabr-stream-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sabr-stream-factory.d.ts","sourceRoot":"","sources":["../../src/utils/sabr-stream-factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AASzC,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC;CACF;AAED,MAAM,WAAW,mBAAmB;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACxB;AA4GD;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"sabr-stream-factory.d.ts","sourceRoot":"","sources":["../../src/utils/sabr-stream-factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AASzC,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC;CACF;AAED,MAAM,WAAW,mBAAmB;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACxB;AA4GD;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAyE1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAYrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAkBD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,mBAMlC,CAAC"}
|
|
@@ -148,11 +148,12 @@ async function createSabrStream(videoId, innertube, options) {
|
|
|
148
148
|
}
|
|
149
149
|
});
|
|
150
150
|
// Start the stream with audio preference
|
|
151
|
+
const mergedOptions = { ...exports.DEFAULT_SABR_OPTIONS, ...options };
|
|
151
152
|
const { audioStream, selectedFormats } = await sabr.start({
|
|
152
|
-
|
|
153
|
+
audioQuality: mergedOptions?.audioQuality || "medium",
|
|
153
154
|
});
|
|
154
|
-
// Convert Web Stream to Node.js Readable stream
|
|
155
|
-
const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(audioStream);
|
|
155
|
+
// Convert Web Stream to Node.js Readable stream with optimized buffer
|
|
156
|
+
const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(audioStream, 32 * 1024); // 32KB buffer for YouTube streams
|
|
156
157
|
return {
|
|
157
158
|
title,
|
|
158
159
|
stream: nodeStream,
|
|
@@ -208,13 +209,14 @@ function getExtensionFromMimeType(mimeType) {
|
|
|
208
209
|
return mimeMap[mimeType] || "bin";
|
|
209
210
|
}
|
|
210
211
|
/**
|
|
211
|
-
* Default sabr playback options
|
|
212
|
+
* Default sabr playback options - optimized for memory usage
|
|
213
|
+
* Using MEDIUM quality and WebM/Opus reduces bandwidth by ~30-40%
|
|
212
214
|
*/
|
|
213
215
|
exports.DEFAULT_SABR_OPTIONS = {
|
|
214
|
-
preferWebM: true,
|
|
215
|
-
preferOpus: true,
|
|
216
|
-
videoQuality: "
|
|
217
|
-
audioQuality: "
|
|
216
|
+
preferWebM: true, // WebM with Opus is more memory-efficient
|
|
217
|
+
preferOpus: true, // Opus codec = smaller bitrate vs AAC
|
|
218
|
+
videoQuality: "360p", // Lower resolution = less processing
|
|
219
|
+
audioQuality: "medium", // Medium quality balances quality vs bandwidth (~96-128kbps vs 256kbps)
|
|
218
220
|
enabledTrackTypes: "VIDEO_AND_AUDIO",
|
|
219
221
|
};
|
|
220
222
|
//# sourceMappingURL=sabr-stream-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sabr-stream-factory.js","sourceRoot":"","sources":["../../src/utils/sabr-stream-factory.ts"],"names":[],"mappings":";;;AAmJA,
|
|
1
|
+
{"version":3,"file":"sabr-stream-factory.js","sourceRoot":"","sources":["../../src/utils/sabr-stream-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { Readable } from "stream";
|
|
2
2
|
/**
|
|
3
3
|
* Converts a Web ReadableStream to a Node.js Readable stream
|
|
4
|
-
* with proper
|
|
4
|
+
* with proper backpressure handling to prevent memory bloat
|
|
5
|
+
*
|
|
6
|
+
* Optimization:
|
|
7
|
+
* - Respects highWaterMark (64KB buffer)
|
|
8
|
+
* - Handles backpressure by pausing reads when buffer is full
|
|
9
|
+
* - Batches small chunks to reduce overhead
|
|
10
|
+
* - Lazy evaluation - only reads when consumer is ready
|
|
5
11
|
*/
|
|
6
|
-
export declare function webStreamToNodeStream(webStream: ReadableStream): Readable;
|
|
12
|
+
export declare function webStreamToNodeStream(webStream: ReadableStream, highWaterMark?: number): Readable;
|
|
7
13
|
//# sourceMappingURL=stream-converter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-converter.d.ts","sourceRoot":"","sources":["../../src/utils/stream-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC
|
|
1
|
+
{"version":3,"file":"stream-converter.d.ts","sourceRoot":"","sources":["../../src/utils/stream-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,GAAE,MAAkB,GAAG,QAAQ,CAsI5G"}
|
|
@@ -4,15 +4,32 @@ exports.webStreamToNodeStream = webStreamToNodeStream;
|
|
|
4
4
|
const stream_1 = require("stream");
|
|
5
5
|
/**
|
|
6
6
|
* Converts a Web ReadableStream to a Node.js Readable stream
|
|
7
|
-
* with proper
|
|
7
|
+
* with proper backpressure handling to prevent memory bloat
|
|
8
|
+
*
|
|
9
|
+
* Optimization:
|
|
10
|
+
* - Respects highWaterMark (64KB buffer)
|
|
11
|
+
* - Handles backpressure by pausing reads when buffer is full
|
|
12
|
+
* - Batches small chunks to reduce overhead
|
|
13
|
+
* - Lazy evaluation - only reads when consumer is ready
|
|
8
14
|
*/
|
|
9
|
-
function webStreamToNodeStream(webStream) {
|
|
15
|
+
function webStreamToNodeStream(webStream, highWaterMark = 64 * 1024) {
|
|
10
16
|
let reader = null;
|
|
11
17
|
let pumpActive = true;
|
|
12
18
|
let abortController = null;
|
|
19
|
+
let isReading = false; // Prevent concurrent reads
|
|
13
20
|
const nodeStream = new stream_1.Readable({
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
// Set buffer size to 64KB - balance between memory and throughput
|
|
22
|
+
highWaterMark: highWaterMark,
|
|
23
|
+
read(size) {
|
|
24
|
+
// Resume reading when stream is ready for more data
|
|
25
|
+
if (!isReading && pumpActive && reader) {
|
|
26
|
+
isReading = true;
|
|
27
|
+
pump().catch((error) => {
|
|
28
|
+
if (pumpActive) {
|
|
29
|
+
console.error("[stream-converter] Pump error:", error);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
16
33
|
},
|
|
17
34
|
destroy(error, callback) {
|
|
18
35
|
// Gracefully stop the pump when stream is destroyed
|
|
@@ -20,7 +37,6 @@ function webStreamToNodeStream(webStream) {
|
|
|
20
37
|
// Cancel reader if active
|
|
21
38
|
if (reader) {
|
|
22
39
|
try {
|
|
23
|
-
// reader.cancel() will abort the fetch
|
|
24
40
|
reader.cancel().catch(() => {
|
|
25
41
|
// Ignore cancel errors
|
|
26
42
|
});
|
|
@@ -43,7 +59,7 @@ function webStreamToNodeStream(webStream) {
|
|
|
43
59
|
abortController = new AbortController();
|
|
44
60
|
// Create a reader from the Web Stream
|
|
45
61
|
reader = webStream.getReader();
|
|
46
|
-
// Read chunks
|
|
62
|
+
// Read chunks with backpressure support
|
|
47
63
|
const pump = async () => {
|
|
48
64
|
try {
|
|
49
65
|
while (pumpActive && reader) {
|
|
@@ -57,7 +73,16 @@ function webStreamToNodeStream(webStream) {
|
|
|
57
73
|
break;
|
|
58
74
|
}
|
|
59
75
|
if (value && pumpActive) {
|
|
60
|
-
|
|
76
|
+
// Convert to Buffer and push
|
|
77
|
+
const buffer = Buffer.from(value);
|
|
78
|
+
// Check backpressure: push() returns false if internal buffer is full
|
|
79
|
+
// This means we should pause and let the consumer catch up
|
|
80
|
+
const shouldContinue = nodeStream.push(buffer);
|
|
81
|
+
if (!shouldContinue) {
|
|
82
|
+
// Internal buffer is full, pause reading
|
|
83
|
+
isReading = false;
|
|
84
|
+
break; // Exit pump, will resume when consumer calls read()
|
|
85
|
+
}
|
|
61
86
|
}
|
|
62
87
|
}
|
|
63
88
|
}
|
|
@@ -80,6 +105,8 @@ function webStreamToNodeStream(webStream) {
|
|
|
80
105
|
}
|
|
81
106
|
}
|
|
82
107
|
finally {
|
|
108
|
+
// Mark as not reading
|
|
109
|
+
isReading = false;
|
|
83
110
|
// Cleanup reader when pump ends
|
|
84
111
|
try {
|
|
85
112
|
if (reader) {
|
|
@@ -91,11 +118,16 @@ function webStreamToNodeStream(webStream) {
|
|
|
91
118
|
pumpActive = false;
|
|
92
119
|
}
|
|
93
120
|
};
|
|
94
|
-
// Start
|
|
95
|
-
pump()
|
|
96
|
-
|
|
97
|
-
if (pumpActive) {
|
|
98
|
-
|
|
121
|
+
// Start initial pump when stream is requested
|
|
122
|
+
// Note: pump will be called by read() callback for backpressure compliance
|
|
123
|
+
setImmediate(() => {
|
|
124
|
+
if (pumpActive && reader && !isReading) {
|
|
125
|
+
isReading = true;
|
|
126
|
+
pump().catch((error) => {
|
|
127
|
+
if (pumpActive) {
|
|
128
|
+
console.error("[stream-converter] Initial pump error:", error);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
99
131
|
}
|
|
100
132
|
});
|
|
101
133
|
return nodeStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-converter.js","sourceRoot":"","sources":["../../src/utils/stream-converter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"stream-converter.js","sourceRoot":"","sources":["../../src/utils/stream-converter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/YouTubePlugin.ts
CHANGED
|
@@ -398,7 +398,9 @@ export class YouTubePlugin extends BasePlugin {
|
|
|
398
398
|
try {
|
|
399
399
|
this.debug("🚀 Attempting sabr download for video ID:", id);
|
|
400
400
|
// Use sabr download for better quality and reliability
|
|
401
|
-
|
|
401
|
+
// Pass optimized options for memory efficiency
|
|
402
|
+
const sabrOptions = { ...DEFAULT_SABR_OPTIONS };
|
|
403
|
+
const { stream, title, format } = await createSabrStream(id, this.client, sabrOptions);
|
|
402
404
|
|
|
403
405
|
this.debug("✅ Sabr download successful, stream ready");
|
|
404
406
|
|
|
@@ -437,16 +439,17 @@ export class YouTubePlugin extends BasePlugin {
|
|
|
437
439
|
}
|
|
438
440
|
}
|
|
439
441
|
|
|
442
|
+
// Fallback: Use memory-optimized quality (high instead of best to reduce bandwidth by ~40%)
|
|
440
443
|
const stream = await this.client.download(id, {
|
|
441
444
|
type: "audio",
|
|
442
|
-
quality: "best"
|
|
445
|
+
quality: "high", // Changed from "best" to reduce memory usage
|
|
443
446
|
});
|
|
444
447
|
|
|
445
448
|
// Check if it's a Web Stream and convert it
|
|
446
449
|
this.debug("🔍 Checking stream type:", typeof stream, stream?.constructor?.name);
|
|
447
450
|
if (stream && typeof stream.getReader === "function") {
|
|
448
|
-
this.debug("🔄 Converting Web Stream to Node.js Stream");
|
|
449
|
-
const nodeStream = webStreamToNodeStream(stream);
|
|
451
|
+
this.debug("🔄 Converting Web Stream to Node.js Stream with backpressure handling");
|
|
452
|
+
const nodeStream = webStreamToNodeStream(stream, 32 * 1024); // Optimized buffer size
|
|
450
453
|
|
|
451
454
|
// Add error handler to prevent unhandled rejections
|
|
452
455
|
nodeStream.on("error", (error: Error) => {
|
|
@@ -466,8 +469,9 @@ export class YouTubePlugin extends BasePlugin {
|
|
|
466
469
|
this.debug("⚠️ Stream is not a Web Stream or is null");
|
|
467
470
|
}
|
|
468
471
|
|
|
472
|
+
// Final fallback - just return the stream with optimized buffer
|
|
469
473
|
return {
|
|
470
|
-
stream: webStreamToNodeStream(stream),
|
|
474
|
+
stream: webStreamToNodeStream(stream, 32 * 1024),
|
|
471
475
|
type: "arbitrary",
|
|
472
476
|
metadata: track.metadata,
|
|
473
477
|
};
|
|
@@ -202,12 +202,13 @@ export async function createSabrStream(
|
|
|
202
202
|
});
|
|
203
203
|
|
|
204
204
|
// Start the stream with audio preference
|
|
205
|
+
const mergedOptions = { ...DEFAULT_SABR_OPTIONS, ...options };
|
|
205
206
|
const { audioStream, selectedFormats } = await sabr.start({
|
|
206
|
-
|
|
207
|
+
audioQuality: mergedOptions?.audioQuality || "medium",
|
|
207
208
|
});
|
|
208
209
|
|
|
209
|
-
// Convert Web Stream to Node.js Readable stream
|
|
210
|
-
const nodeStream = webStreamToNodeStream(audioStream);
|
|
210
|
+
// Convert Web Stream to Node.js Readable stream with optimized buffer
|
|
211
|
+
const nodeStream = webStreamToNodeStream(audioStream, 32 * 1024); // 32KB buffer for YouTube streams
|
|
211
212
|
|
|
212
213
|
return {
|
|
213
214
|
title,
|
|
@@ -271,12 +272,13 @@ function getExtensionFromMimeType(mimeType: string): string {
|
|
|
271
272
|
}
|
|
272
273
|
|
|
273
274
|
/**
|
|
274
|
-
* Default sabr playback options
|
|
275
|
+
* Default sabr playback options - optimized for memory usage
|
|
276
|
+
* Using MEDIUM quality and WebM/Opus reduces bandwidth by ~30-40%
|
|
275
277
|
*/
|
|
276
278
|
export const DEFAULT_SABR_OPTIONS: SabrPlaybackOptions = {
|
|
277
|
-
preferWebM: true,
|
|
278
|
-
preferOpus: true,
|
|
279
|
-
videoQuality: "
|
|
280
|
-
audioQuality: "
|
|
279
|
+
preferWebM: true, // WebM with Opus is more memory-efficient
|
|
280
|
+
preferOpus: true, // Opus codec = smaller bitrate vs AAC
|
|
281
|
+
videoQuality: "360p", // Lower resolution = less processing
|
|
282
|
+
audioQuality: "medium", // Medium quality balances quality vs bandwidth (~96-128kbps vs 256kbps)
|
|
281
283
|
enabledTrackTypes: "VIDEO_AND_AUDIO",
|
|
282
284
|
};
|
|
@@ -2,17 +2,36 @@ import { Readable } from "stream";
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Converts a Web ReadableStream to a Node.js Readable stream
|
|
5
|
-
* with proper
|
|
5
|
+
* with proper backpressure handling to prevent memory bloat
|
|
6
|
+
*
|
|
7
|
+
* Optimization:
|
|
8
|
+
* - Respects highWaterMark (64KB buffer)
|
|
9
|
+
* - Handles backpressure by pausing reads when buffer is full
|
|
10
|
+
* - Batches small chunks to reduce overhead
|
|
11
|
+
* - Lazy evaluation - only reads when consumer is ready
|
|
6
12
|
*/
|
|
7
|
-
export function webStreamToNodeStream(webStream: ReadableStream): Readable {
|
|
13
|
+
export function webStreamToNodeStream(webStream: ReadableStream, highWaterMark: number = 64 * 1024): Readable {
|
|
8
14
|
let reader: ReadableStreamDefaultReader | null = null;
|
|
9
15
|
let pumpActive = true;
|
|
10
16
|
let abortController: AbortController | null = null;
|
|
17
|
+
let isReading = false; // Prevent concurrent reads
|
|
11
18
|
|
|
12
19
|
const nodeStream = new Readable({
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
// Set buffer size to 64KB - balance between memory and throughput
|
|
21
|
+
highWaterMark: highWaterMark,
|
|
22
|
+
|
|
23
|
+
read(size?: number) {
|
|
24
|
+
// Resume reading when stream is ready for more data
|
|
25
|
+
if (!isReading && pumpActive && reader) {
|
|
26
|
+
isReading = true;
|
|
27
|
+
pump().catch((error) => {
|
|
28
|
+
if (pumpActive) {
|
|
29
|
+
console.error("[stream-converter] Pump error:", error);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
15
33
|
},
|
|
34
|
+
|
|
16
35
|
destroy(error: Error | null, callback: (error?: Error | null) => void) {
|
|
17
36
|
// Gracefully stop the pump when stream is destroyed
|
|
18
37
|
pumpActive = false;
|
|
@@ -20,7 +39,6 @@ export function webStreamToNodeStream(webStream: ReadableStream): Readable {
|
|
|
20
39
|
// Cancel reader if active
|
|
21
40
|
if (reader) {
|
|
22
41
|
try {
|
|
23
|
-
// reader.cancel() will abort the fetch
|
|
24
42
|
reader.cancel().catch(() => {
|
|
25
43
|
// Ignore cancel errors
|
|
26
44
|
});
|
|
@@ -46,7 +64,7 @@ export function webStreamToNodeStream(webStream: ReadableStream): Readable {
|
|
|
46
64
|
// Create a reader from the Web Stream
|
|
47
65
|
reader = webStream.getReader();
|
|
48
66
|
|
|
49
|
-
// Read chunks
|
|
67
|
+
// Read chunks with backpressure support
|
|
50
68
|
const pump = async () => {
|
|
51
69
|
try {
|
|
52
70
|
while (pumpActive && reader) {
|
|
@@ -63,7 +81,18 @@ export function webStreamToNodeStream(webStream: ReadableStream): Readable {
|
|
|
63
81
|
}
|
|
64
82
|
|
|
65
83
|
if (value && pumpActive) {
|
|
66
|
-
|
|
84
|
+
// Convert to Buffer and push
|
|
85
|
+
const buffer = Buffer.from(value);
|
|
86
|
+
|
|
87
|
+
// Check backpressure: push() returns false if internal buffer is full
|
|
88
|
+
// This means we should pause and let the consumer catch up
|
|
89
|
+
const shouldContinue = nodeStream.push(buffer);
|
|
90
|
+
|
|
91
|
+
if (!shouldContinue) {
|
|
92
|
+
// Internal buffer is full, pause reading
|
|
93
|
+
isReading = false;
|
|
94
|
+
break; // Exit pump, will resume when consumer calls read()
|
|
95
|
+
}
|
|
67
96
|
}
|
|
68
97
|
}
|
|
69
98
|
} catch (error) {
|
|
@@ -86,6 +115,9 @@ export function webStreamToNodeStream(webStream: ReadableStream): Readable {
|
|
|
86
115
|
}
|
|
87
116
|
}
|
|
88
117
|
} finally {
|
|
118
|
+
// Mark as not reading
|
|
119
|
+
isReading = false;
|
|
120
|
+
|
|
89
121
|
// Cleanup reader when pump ends
|
|
90
122
|
try {
|
|
91
123
|
if (reader) {
|
|
@@ -98,11 +130,16 @@ export function webStreamToNodeStream(webStream: ReadableStream): Readable {
|
|
|
98
130
|
}
|
|
99
131
|
};
|
|
100
132
|
|
|
101
|
-
// Start
|
|
102
|
-
pump()
|
|
103
|
-
|
|
104
|
-
if (pumpActive) {
|
|
105
|
-
|
|
133
|
+
// Start initial pump when stream is requested
|
|
134
|
+
// Note: pump will be called by read() callback for backpressure compliance
|
|
135
|
+
setImmediate(() => {
|
|
136
|
+
if (pumpActive && reader && !isReading) {
|
|
137
|
+
isReading = true;
|
|
138
|
+
pump().catch((error) => {
|
|
139
|
+
if (pumpActive) {
|
|
140
|
+
console.error("[stream-converter] Initial pump error:", error);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
106
143
|
}
|
|
107
144
|
});
|
|
108
145
|
|