diff --git a/play-dl/YouTube/stream.ts b/play-dl/YouTube/stream.ts index 648e3b3..4cb89d7 100644 --- a/play-dl/YouTube/stream.ts +++ b/play-dl/YouTube/stream.ts @@ -19,6 +19,7 @@ export interface StreamOptions { language?: string; htmldata?: boolean; precache?: number; + optimization?: boolean } /** @@ -86,24 +87,27 @@ export async function stream_from_info( final[0].codec === 'opus' && final[0].container === 'webm' ? StreamType.WebmOpus : StreamType.Arbitrary; await request_stream(`https://${new URL(final[0].url).host}/generate_204`); if (type === StreamType.WebmOpus) { - options.seek ??= 0 - if (options.seek >= info.video_details.durationInSec || options.seek < 0) - throw new Error(`Seeking beyond limit. [ 0 - ${info.video_details.durationInSec - 1}]`); - return new SeekStream( - final[0].url, - info.video_details.durationInSec, - final[0].indexRange.end, - Number(final[0].contentLength), - info.video_details.url, - options - ); - } else - return new Stream( - final[0].url, - type, - info.video_details.durationInSec, - Number(final[0].contentLength), - info.video_details.url, - options - ); + options.optimization ??= true + if(options.optimization){ + options.seek ??= 0 + if (options.seek >= info.video_details.durationInSec || options.seek < 0) + throw new Error(`Seeking beyond limit. [ 0 - ${info.video_details.durationInSec - 1}]`); + return new SeekStream( + final[0].url, + info.video_details.durationInSec, + final[0].indexRange.end, + Number(final[0].contentLength), + info.video_details.url, + options + ); + } + } + return new Stream( + final[0].url, + type, + info.video_details.durationInSec, + Number(final[0].contentLength), + info.video_details.url, + options + ); } diff --git a/play-dl/index.ts b/play-dl/index.ts index 4848b33..c2d2a20 100644 --- a/play-dl/index.ts +++ b/play-dl/index.ts @@ -100,6 +100,7 @@ async function stream(url: string, options?: StreamOptions): Promise { @@ -239,6 +240,7 @@ async function stream_from_info(info: InfoData, options?: StreamOptions): Promis * - `number` quality : Quality number. [ 0 = Lowest, 1 = Medium, 2 = Highest ] * - `boolean` htmldata : given data is html data or not * - `number` precache : No of segments of data to store before looping [YouTube Live Stream only]. [ Defaults to 3 ] + * - `boolean` optimization : Conversion of Webm to Opus[ Defaults to true ] * @returns A {@link YouTubeStream} or {@link SoundCloudStream} Stream to play */ async function stream_from_info(