@ziplayer/plugin 0.2.1 → 0.2.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.
@@ -2,13 +2,14 @@ import { BasePlugin, Track, SearchResult, StreamInfo, Player } from "ziplayer";
2
2
  import { Innertube } from "youtubei.js";
3
3
  export interface PluginOptions {
4
4
  player: Player;
5
- debug?: boolean;
5
+ debug?: (message?: any, ...optionalParams: any[]) => any;
6
6
  searchClient?: Innertube;
7
7
  client?: Innertube;
8
8
  searchLimit?: number;
9
9
  clientType?: "WEB" | "ANDROID" | "IOS";
10
10
  searchClientType?: "WEB" | "ANDROID" | "IOS";
11
11
  fallbackStream?: (track: Track) => Promise<StreamInfo>;
12
+ fistStream?: (track: Track) => Promise<StreamInfo>;
12
13
  }
13
14
  /**
14
15
  * A plugin for handling YouTube audio content including videos, playlists, and search functionality.
@@ -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,OAAO,CAAC;IAChB,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;IAMb,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;IAoElD;;;;;;;;;;;;;;;;;;;;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"}
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;IACvD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACnD;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;IA2GlD;;;;;;;;;;;;;;;;;;;;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"}
@@ -68,9 +68,11 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
68
68
  youtubei_js_1.Log.setLevel(0);
69
69
  }
70
70
  debug(message, ...optionalParams) {
71
- if (this.options?.debug && this?.player && this.player?.listenerCount("debug") > 0) {
71
+ if (this?.player && this.player?.listenerCount("debug") > 0) {
72
72
  this.player.emit("debug", `[YouTubePlugin] ${message}`, ...optionalParams);
73
73
  }
74
+ if (this.options.debug)
75
+ this.options.debug(`[YouTubePlugin] ${message}`, ...optionalParams);
74
76
  }
75
77
  // Build a Track from various YouTube object shapes (search item, playlist item, watch_next feed, basic_info, info)
76
78
  buildTrack(raw, requestedBy, extra) {
@@ -314,6 +316,24 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
314
316
  * console.log(streamInfo.stream); // Readable stream
315
317
  */
316
318
  async getStream(track) {
319
+ if (this.options?.fistStream && typeof this.options.fistStream === "function") {
320
+ this.debug("🔁 Attempting user-provided fist stream method");
321
+ let fbStream = null;
322
+ try {
323
+ fbStream = await this.options.fistStream(track);
324
+ }
325
+ catch (err) {
326
+ fbStream = null;
327
+ this.debug(`⚠️ User-provided fist stream failed: ${err?.message}`);
328
+ }
329
+ if (fbStream && fbStream?.stream) {
330
+ this.debug("✅ User-provided fist stream successful");
331
+ return fbStream;
332
+ }
333
+ else {
334
+ this.debug("⚠️ User-provided fist stream failed or returned invalid stream");
335
+ }
336
+ }
317
337
  await this.ready;
318
338
  const id = this.extractVideoId(track.url) || track.id;
319
339
  if (!id)
@@ -321,11 +341,21 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
321
341
  try {
322
342
  this.debug("🚀 Attempting sabr download for video ID:", id);
323
343
  // Use sabr download for better quality and reliability
324
- const { stream, title, format } = await (0, sabr_stream_factory_1.createSabrStream)(id, this.client, sabr_stream_factory_1.DEFAULT_SABR_OPTIONS);
344
+ // Pass optimized options for memory efficiency
345
+ const sabrOptions = { ...sabr_stream_factory_1.DEFAULT_SABR_OPTIONS };
346
+ const { stream, title, format } = await (0, sabr_stream_factory_1.createSabrStream)(id, this.client, sabrOptions);
325
347
  this.debug("✅ Sabr download successful, stream ready");
326
348
  if (!stream) {
327
349
  throw new Error("Sabr download did not return a stream");
328
350
  }
351
+ // Add error handler to prevent unhandled rejections from SABR
352
+ stream.on("error", (error) => {
353
+ const errorMsg = error.message || String(error);
354
+ // Log but suppress "Controller is already closed" errors as they're expected during cleanup
355
+ if (!errorMsg.includes("Controller is already closed")) {
356
+ this.debug("⚠️ SABR stream error:", errorMsg);
357
+ }
358
+ });
329
359
  return {
330
360
  stream: stream,
331
361
  type: "arbitrary",
@@ -349,15 +379,23 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
349
379
  this.debug("⚠️ User-provided fallback stream failed or returned invalid stream");
350
380
  }
351
381
  }
382
+ // Fallback: Use memory-optimized quality (high instead of best to reduce bandwidth by ~40%)
352
383
  const stream = await this.client.download(id, {
353
384
  type: "audio",
354
- quality: "best",
385
+ quality: "high", // Changed from "best" to reduce memory usage
355
386
  });
356
387
  // Check if it's a Web Stream and convert it
357
388
  this.debug("🔍 Checking stream type:", typeof stream, stream?.constructor?.name);
358
389
  if (stream && typeof stream.getReader === "function") {
359
- this.debug("🔄 Converting Web Stream to Node.js Stream");
360
- const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(stream);
390
+ this.debug("🔄 Converting Web Stream to Node.js Stream with backpressure handling");
391
+ const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(stream, 32 * 1024); // Optimized buffer size
392
+ // Add error handler to prevent unhandled rejections
393
+ nodeStream.on("error", (error) => {
394
+ const errorMsg = error.message || String(error);
395
+ if (!errorMsg.includes("Controller is already closed")) {
396
+ this.debug("⚠️ Fallback stream error:", errorMsg);
397
+ }
398
+ });
361
399
  this.debug("✅ Stream converted successfully");
362
400
  return {
363
401
  stream: nodeStream,
@@ -368,8 +406,9 @@ class YouTubePlugin extends ziplayer_1.BasePlugin {
368
406
  else {
369
407
  this.debug("⚠️ Stream is not a Web Stream or is null");
370
408
  }
409
+ // Final fallback - just return the stream with optimized buffer
371
410
  return {
372
- stream: (0, stream_converter_1.webStreamToNodeStream)(stream),
411
+ stream: (0, stream_converter_1.webStreamToNodeStream)(stream, 32 * 1024),
373
412
  type: "arbitrary",
374
413
  metadata: track.metadata,
375
414
  };
@@ -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,CAwE1B;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;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,mBAMlC,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,CA0G1B;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"}
@@ -121,7 +121,34 @@ async function createSabrStream(videoId, innertube, options) {
121
121
  if (!serverAbrStreamingUrl || !ustreamerConfig) {
122
122
  throw new Error("Missing SABR streaming config");
123
123
  }
124
- const sabrFormats = player.streaming_data?.adaptive_formats.map((f) => (0, utils_1.buildSabrFormat)(f)) || [];
124
+ // const sabrFormats = player.streaming_data?.adaptive_formats.map((f: any) => buildSabrFormat(f)) || [];
125
+ // const sabrFormats =
126
+ // player.streaming_data?.adaptive_formats?.reduce((acc: any[], f: any) => {
127
+ // if (!!f?.audio_quality) {
128
+ // acc.push(buildSabrFormat(f));
129
+ // }
130
+ // return acc;
131
+ // }, []) ?? [];
132
+ const allFormats = player.streaming_data?.adaptive_formats.map((f) => (0, utils_1.buildSabrFormat)(f)) || [];
133
+ console.log();
134
+ const sabrFormats = allFormats
135
+ .reduce((acc, f) => {
136
+ // Kiểm tra nếu là Audio (có audioQuality)
137
+ if (f.audioQuality) {
138
+ if (!acc[0] || f.bitrate > acc[0].bitrate) {
139
+ acc[0] = f;
140
+ }
141
+ }
142
+ // Ngược lại là Video (thường có width/height hoặc không có audioQuality)
143
+ else if (f.width) {
144
+ if (!acc[1] || f.bitrate < acc[1].bitrate) {
145
+ acc[1] = f;
146
+ }
147
+ }
148
+ return acc;
149
+ }, [null, null]) // [0] là best audio, [1] là worst video
150
+ .filter(Boolean);
151
+ console.log(sabrFormats);
125
152
  const sabr = new sabr_stream_1.SabrStream({
126
153
  formats: sabrFormats,
127
154
  serverAbrStreamingUrl,
@@ -148,11 +175,12 @@ async function createSabrStream(videoId, innertube, options) {
148
175
  }
149
176
  });
150
177
  // Start the stream with audio preference
178
+ const mergedOptions = { ...exports.DEFAULT_SABR_OPTIONS, ...options };
151
179
  const { audioStream, selectedFormats } = await sabr.start({
152
- // audioQuality: options?.audioQuality || "high",
180
+ audioQuality: mergedOptions?.audioQuality || "medium",
153
181
  });
154
- // Convert Web Stream to Node.js Readable stream
155
- const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(audioStream);
182
+ // Convert Web Stream to Node.js Readable stream with optimized buffer
183
+ const nodeStream = (0, stream_converter_1.webStreamToNodeStream)(audioStream, 32 * 1024); // 32KB buffer for YouTube streams
156
184
  return {
157
185
  title,
158
186
  stream: nodeStream,
@@ -208,13 +236,14 @@ function getExtensionFromMimeType(mimeType) {
208
236
  return mimeMap[mimeType] || "bin";
209
237
  }
210
238
  /**
211
- * Default sabr playback options
239
+ * Default sabr playback options - optimized for memory usage
240
+ * Using MEDIUM quality and WebM/Opus reduces bandwidth by ~30-40%
212
241
  */
213
242
  exports.DEFAULT_SABR_OPTIONS = {
214
- preferWebM: true,
215
- preferOpus: true,
216
- videoQuality: "720p",
217
- audioQuality: "high",
243
+ preferWebM: true, // WebM with Opus is more memory-efficient
244
+ preferOpus: true, // Opus codec = smaller bitrate vs AAC
245
+ videoQuality: "360p", // Lower resolution = less processing
246
+ audioQuality: "medium", // Medium quality balances quality vs bandwidth (~96-128kbps vs 256kbps)
218
247
  enabledTrackTypes: "VIDEO_AND_AUDIO",
219
248
  };
220
249
  //# 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":"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"}
1
+ {"version":3,"file":"sabr-stream-factory.js","sourceRoot":"","sources":["../../src/utils/sabr-stream-factory.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
1
  import { Readable } from "stream";
2
- /**
3
- * Converts a Web ReadableStream to a Node.js Readable stream
4
- */
5
- export declare function webStreamToNodeStream(webStream: ReadableStream): Readable;
2
+ export declare function webStreamToNodeStream(webStream: ReadableStream, highWaterMark?: number): Readable;
6
3
  //# 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;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,GAAG,QAAQ,CA8BzE"}
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,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,GAAE,MAAkB,GAAG,QAAQ,CAkB5G"}
@@ -2,35 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.webStreamToNodeStream = webStreamToNodeStream;
4
4
  const stream_1 = require("stream");
5
- /**
6
- * Converts a Web ReadableStream to a Node.js Readable stream
7
- */
8
- function webStreamToNodeStream(webStream) {
9
- const nodeStream = new stream_1.Readable({
10
- read() {
11
- // This will be handled by the Web Stream reader
12
- },
13
- });
14
- // Create a reader from the Web Stream
5
+ function webStreamToNodeStream(webStream, highWaterMark = 64 * 1024) {
15
6
  const reader = webStream.getReader();
16
- // Read chunks and push to Node.js stream
17
- const pump = async () => {
18
- try {
19
- while (true) {
7
+ return new stream_1.Readable({
8
+ highWaterMark: highWaterMark ?? 64 * 1024,
9
+ async read() {
10
+ try {
20
11
  const { done, value } = await reader.read();
21
12
  if (done) {
22
- nodeStream.push(null); // End the stream
23
- break;
13
+ this.push(null);
14
+ }
15
+ else {
16
+ this.push(value);
24
17
  }
25
- nodeStream.push(Buffer.from(value));
26
18
  }
27
- }
28
- catch (error) {
29
- nodeStream.destroy(error);
30
- }
31
- };
32
- // Start pumping data
33
- pump();
34
- return nodeStream;
19
+ catch (err) {
20
+ this.destroy(err);
21
+ }
22
+ },
23
+ });
35
24
  }
36
25
  //# sourceMappingURL=stream-converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-converter.js","sourceRoot":"","sources":["../../src/utils/stream-converter.ts"],"names":[],"mappings":";;AAKA,sDA8BC;AAnCD,mCAAkC;AAElC;;GAEG;AACH,SAAgB,qBAAqB,CAAC,SAAyB;IAC9D,MAAM,UAAU,GAAG,IAAI,iBAAQ,CAAC;QAC/B,IAAI;YACH,gDAAgD;QACjD,CAAC;KACD,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;IAErC,yCAAyC;IACzC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC;YACJ,OAAO,IAAI,EAAE,CAAC;gBACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACV,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB;oBACxC,MAAM;gBACP,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,UAAU,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACpC,CAAC;IACF,CAAC,CAAC;IAEF,qBAAqB;IACrB,IAAI,EAAE,CAAC;IAEP,OAAO,UAAU,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"stream-converter.js","sourceRoot":"","sources":["../../src/utils/stream-converter.ts"],"names":[],"mappings":";;AAEA,sDAkBC;AApBD,mCAAkC;AAElC,SAAgB,qBAAqB,CAAC,SAAyB,EAAE,gBAAwB,EAAE,GAAG,IAAI;IACjG,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;IAErC,OAAO,IAAI,iBAAQ,CAAC;QACnB,aAAa,EAAE,aAAa,IAAI,EAAE,GAAG,IAAI;QACzC,KAAK,CAAC,IAAI;YACT,IAAI,CAAC;gBACJ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,GAAY,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ziplayer/plugin",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "A modular Discord voice player with plugin system",
5
5
  "keywords": [
6
6
  "ZiPlayer",
@@ -6,13 +6,14 @@ import { webStreamToNodeStream } from "./utils/stream-converter";
6
6
 
7
7
  export interface PluginOptions {
8
8
  player: Player;
9
- debug?: boolean;
9
+ debug?: (message?: any, ...optionalParams: any[]) => any;
10
10
  searchClient?: Innertube;
11
11
  client?: Innertube;
12
12
  searchLimit?: number;
13
13
  clientType?: "WEB" | "ANDROID" | "IOS";
14
14
  searchClientType?: "WEB" | "ANDROID" | "IOS";
15
15
  fallbackStream?: (track: Track) => Promise<StreamInfo>;
16
+ fistStream?: (track: Track) => Promise<StreamInfo>;
16
17
  }
17
18
 
18
19
  /**
@@ -88,9 +89,10 @@ export class YouTubePlugin extends BasePlugin {
88
89
  }
89
90
 
90
91
  private debug(message?: any, ...optionalParams: any[]): void {
91
- if (this.options?.debug && this?.player && this.player?.listenerCount("debug") > 0) {
92
+ if (this?.player && this.player?.listenerCount("debug") > 0) {
92
93
  this.player.emit("debug", `[YouTubePlugin] ${message}`, ...optionalParams);
93
94
  }
95
+ if (this.options.debug) this.options.debug(`[YouTubePlugin] ${message}`, ...optionalParams);
94
96
  }
95
97
  // Build a Track from various YouTube object shapes (search item, playlist item, watch_next feed, basic_info, info)
96
98
  private buildTrack(raw: any, requestedBy: string, extra?: { playlist?: string }): Track {
@@ -388,6 +390,23 @@ export class YouTubePlugin extends BasePlugin {
388
390
  * console.log(streamInfo.stream); // Readable stream
389
391
  */
390
392
  async getStream(track: Track): Promise<StreamInfo> {
393
+ if (this.options?.fistStream && typeof this.options.fistStream === "function") {
394
+ this.debug("🔁 Attempting user-provided fist stream method");
395
+ let fbStream = null;
396
+ try {
397
+ fbStream = await this.options.fistStream(track);
398
+ } catch (err: any) {
399
+ fbStream = null;
400
+ this.debug(`⚠️ User-provided fist stream failed: ${err?.message}`);
401
+ }
402
+ if (fbStream && fbStream?.stream) {
403
+ this.debug("✅ User-provided fist stream successful");
404
+ return fbStream;
405
+ } else {
406
+ this.debug("⚠️ User-provided fist stream failed or returned invalid stream");
407
+ }
408
+ }
409
+
391
410
  await this.ready;
392
411
 
393
412
  const id = this.extractVideoId(track.url) || track.id;
@@ -397,7 +416,9 @@ export class YouTubePlugin extends BasePlugin {
397
416
  try {
398
417
  this.debug("🚀 Attempting sabr download for video ID:", id);
399
418
  // Use sabr download for better quality and reliability
400
- const { stream, title, format } = await createSabrStream(id, this.client, DEFAULT_SABR_OPTIONS);
419
+ // Pass optimized options for memory efficiency
420
+ const sabrOptions = { ...DEFAULT_SABR_OPTIONS };
421
+ const { stream, title, format } = await createSabrStream(id, this.client, sabrOptions);
401
422
 
402
423
  this.debug("✅ Sabr download successful, stream ready");
403
424
 
@@ -405,6 +426,15 @@ export class YouTubePlugin extends BasePlugin {
405
426
  throw new Error("Sabr download did not return a stream");
406
427
  }
407
428
 
429
+ // Add error handler to prevent unhandled rejections from SABR
430
+ stream.on("error", (error: Error) => {
431
+ const errorMsg = error.message || String(error);
432
+ // Log but suppress "Controller is already closed" errors as they're expected during cleanup
433
+ if (!errorMsg.includes("Controller is already closed")) {
434
+ this.debug("⚠️ SABR stream error:", errorMsg);
435
+ }
436
+ });
437
+
408
438
  return {
409
439
  stream: stream,
410
440
  type: "arbitrary",
@@ -427,16 +457,26 @@ export class YouTubePlugin extends BasePlugin {
427
457
  }
428
458
  }
429
459
 
460
+ // Fallback: Use memory-optimized quality (high instead of best to reduce bandwidth by ~40%)
430
461
  const stream = await this.client.download(id, {
431
462
  type: "audio",
432
- quality: "best",
463
+ quality: "high", // Changed from "best" to reduce memory usage
433
464
  });
434
465
 
435
466
  // Check if it's a Web Stream and convert it
436
467
  this.debug("🔍 Checking stream type:", typeof stream, stream?.constructor?.name);
437
468
  if (stream && typeof stream.getReader === "function") {
438
- this.debug("🔄 Converting Web Stream to Node.js Stream");
439
- const nodeStream = webStreamToNodeStream(stream);
469
+ this.debug("🔄 Converting Web Stream to Node.js Stream with backpressure handling");
470
+ const nodeStream = webStreamToNodeStream(stream, 32 * 1024); // Optimized buffer size
471
+
472
+ // Add error handler to prevent unhandled rejections
473
+ nodeStream.on("error", (error: Error) => {
474
+ const errorMsg = error.message || String(error);
475
+ if (!errorMsg.includes("Controller is already closed")) {
476
+ this.debug("⚠️ Fallback stream error:", errorMsg);
477
+ }
478
+ });
479
+
440
480
  this.debug("✅ Stream converted successfully");
441
481
  return {
442
482
  stream: nodeStream,
@@ -447,8 +487,9 @@ export class YouTubePlugin extends BasePlugin {
447
487
  this.debug("⚠️ Stream is not a Web Stream or is null");
448
488
  }
449
489
 
490
+ // Final fallback - just return the stream with optimized buffer
450
491
  return {
451
- stream: webStreamToNodeStream(stream),
492
+ stream: webStreamToNodeStream(stream, 32 * 1024),
452
493
  type: "arbitrary",
453
494
  metadata: track.metadata,
454
495
  };
@@ -168,7 +168,40 @@ export async function createSabrStream(
168
168
  throw new Error("Missing SABR streaming config");
169
169
  }
170
170
 
171
- const sabrFormats = player.streaming_data?.adaptive_formats.map((f: any) => buildSabrFormat(f)) || [];
171
+ // const sabrFormats = player.streaming_data?.adaptive_formats.map((f: any) => buildSabrFormat(f)) || [];
172
+
173
+ // const sabrFormats =
174
+ // player.streaming_data?.adaptive_formats?.reduce((acc: any[], f: any) => {
175
+ // if (!!f?.audio_quality) {
176
+ // acc.push(buildSabrFormat(f));
177
+ // }
178
+ // return acc;
179
+ // }, []) ?? [];
180
+ const allFormats = player.streaming_data?.adaptive_formats.map((f: any) => buildSabrFormat(f)) || [];
181
+ console.log();
182
+
183
+ const sabrFormats = allFormats
184
+ .reduce(
185
+ (acc: any[], f: any) => {
186
+ // Kiểm tra nếu là Audio (có audioQuality)
187
+ if (f.audioQuality) {
188
+ if (!acc[0] || f.bitrate > acc[0].bitrate) {
189
+ acc[0] = f;
190
+ }
191
+ }
192
+ // Ngược lại là Video (thường có width/height hoặc không có audioQuality)
193
+ else if (f.width) {
194
+ if (!acc[1] || f.bitrate < acc[1].bitrate) {
195
+ acc[1] = f;
196
+ }
197
+ }
198
+ return acc;
199
+ },
200
+ [null, null],
201
+ ) // [0] là best audio, [1] là worst video
202
+ .filter(Boolean);
203
+
204
+ console.log(sabrFormats);
172
205
 
173
206
  const sabr = new SabrStream({
174
207
  formats: sabrFormats,
@@ -202,12 +235,13 @@ export async function createSabrStream(
202
235
  });
203
236
 
204
237
  // Start the stream with audio preference
238
+ const mergedOptions = { ...DEFAULT_SABR_OPTIONS, ...options };
205
239
  const { audioStream, selectedFormats } = await sabr.start({
206
- // audioQuality: options?.audioQuality || "high",
240
+ audioQuality: mergedOptions?.audioQuality || "medium",
207
241
  });
208
242
 
209
- // Convert Web Stream to Node.js Readable stream
210
- const nodeStream = webStreamToNodeStream(audioStream);
243
+ // Convert Web Stream to Node.js Readable stream with optimized buffer
244
+ const nodeStream = webStreamToNodeStream(audioStream, 32 * 1024); // 32KB buffer for YouTube streams
211
245
 
212
246
  return {
213
247
  title,
@@ -271,12 +305,13 @@ function getExtensionFromMimeType(mimeType: string): string {
271
305
  }
272
306
 
273
307
  /**
274
- * Default sabr playback options
308
+ * Default sabr playback options - optimized for memory usage
309
+ * Using MEDIUM quality and WebM/Opus reduces bandwidth by ~30-40%
275
310
  */
276
311
  export const DEFAULT_SABR_OPTIONS: SabrPlaybackOptions = {
277
- preferWebM: true,
278
- preferOpus: true,
279
- videoQuality: "720p",
280
- audioQuality: "high",
312
+ preferWebM: true, // WebM with Opus is more memory-efficient
313
+ preferOpus: true, // Opus codec = smaller bitrate vs AAC
314
+ videoQuality: "360p", // Lower resolution = less processing
315
+ audioQuality: "medium", // Medium quality balances quality vs bandwidth (~96-128kbps vs 256kbps)
281
316
  enabledTrackTypes: "VIDEO_AND_AUDIO",
282
317
  };
@@ -1,36 +1,21 @@
1
1
  import { Readable } from "stream";
2
2
 
3
- /**
4
- * Converts a Web ReadableStream to a Node.js Readable stream
5
- */
6
- export function webStreamToNodeStream(webStream: ReadableStream): Readable {
7
- const nodeStream = new Readable({
8
- read() {
9
- // This will be handled by the Web Stream reader
10
- },
11
- });
12
-
13
- // Create a reader from the Web Stream
3
+ export function webStreamToNodeStream(webStream: ReadableStream, highWaterMark: number = 64 * 1024): Readable {
14
4
  const reader = webStream.getReader();
15
5
 
16
- // Read chunks and push to Node.js stream
17
- const pump = async () => {
18
- try {
19
- while (true) {
6
+ return new Readable({
7
+ highWaterMark: highWaterMark ?? 64 * 1024,
8
+ async read() {
9
+ try {
20
10
  const { done, value } = await reader.read();
21
11
  if (done) {
22
- nodeStream.push(null); // End the stream
23
- break;
12
+ this.push(null);
13
+ } else {
14
+ this.push(value);
24
15
  }
25
- nodeStream.push(Buffer.from(value));
16
+ } catch (err) {
17
+ this.destroy(err as Error);
26
18
  }
27
- } catch (error) {
28
- nodeStream.destroy(error as Error);
29
- }
30
- };
31
-
32
- // Start pumping data
33
- pump();
34
-
35
- return nodeStream;
19
+ },
20
+ });
36
21
  }