YouTube.js
Guide
Discord
❤️ Sponsor
GitHub
Guide
Discord
❤️ Sponsor
GitHub

googlevideo / exports/sabr-stream / SabrStream

Class: SabrStream

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:110

Manages the download and processing of YouTube's Server-Adaptive Bitrate (SABR) streams.

This class handles the entire lifecycle of a SABR stream:

  • Selecting appropriate video and audio formats.
  • Making network requests to fetch media segments.
  • Processing UMP parts in real-time.
  • Handling server-side directives like redirects, context updates, and backoff policies.
  • Emitting events for key stream updates, such as format initialization and errors.
  • Providing separate ReadableStream instances for video and audio data.

Extends

  • EventEmitterLike

Constructors

Constructor

new SabrStream(config): SabrStream

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:198

Parameters

config

SabrStreamConfig = {}

Returns

SabrStream

Overrides

EventEmitterLike.constructor

Methods

abort()

abort(): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:274

Aborts the download process, closing all streams and cleaning up resources. Emits an 'abort' event.

Returns

void


addEventListener()

addEventListener(type, callback, options?): void

Defined in: codeberg/googlevideo/node_modules/typescript/lib/lib.dom.d.ts:8876

Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.

The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.

When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.

When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.

When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.

If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.

The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.

MDN Reference

Parameters

type

string

callback

null | EventListenerOrEventListenerObject

options?

boolean | AddEventListenerOptions

Returns

void

Inherited from

EventEmitterLike.addEventListener


dispatchEvent()

dispatchEvent(event): boolean

Defined in: codeberg/googlevideo/node_modules/typescript/lib/lib.dom.d.ts:8882

Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.

MDN Reference

Parameters

event

Event

Returns

boolean

Inherited from

EventEmitterLike.dispatchEvent


emit()

emit(type, ...args): void

Defined in: codeberg/googlevideo/src/utils/EventEmitterLike.ts:29

Parameters

type

string

args

...any[]

Returns

void

Inherited from

EventEmitterLike.emit


getState()

getState(): SabrStreamState

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:296

Returns a serializable state object that can be used to restore the stream later.

Returns

SabrStreamState

The current state of the stream.

Throws

If the main format is not initialized.


off()

off(type, listener): void

Defined in: codeberg/googlevideo/src/utils/EventEmitterLike.ts:59

Parameters

type

string

listener

(...args) => void

Returns

void

Inherited from

EventEmitterLike.off


once()

Call Signature

once(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:189

Parameters
event

"formatInitialization"

listener

(initializedFormat) => void

Returns

void

Overrides

EventEmitterLike.once

Call Signature

once(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:190

Parameters
event

"streamProtectionStatusUpdate"

listener

(data) => void

Returns

void

Overrides

EventEmitterLike.once

Call Signature

once(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:191

Parameters
event

"reloadPlayerResponse"

listener

(reloadPlaybackContext) => void

Returns

void

Overrides

EventEmitterLike.once

Call Signature

once(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:192

Parameters
event

"finish"

listener

() => void

Returns

void

Overrides

EventEmitterLike.once

Call Signature

once(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:193

Parameters
event

"abort"

listener

() => void

Returns

void

Overrides

EventEmitterLike.once


removeAllListeners()

removeAllListeners(type?): void

Defined in: codeberg/googlevideo/src/utils/EventEmitterLike.ts:67

Parameters

type?

string

Returns

void

Inherited from

EventEmitterLike.removeAllListeners


removeEventListener()

removeEventListener(type, callback, options?): void

Defined in: codeberg/googlevideo/node_modules/typescript/lib/lib.dom.d.ts:8888

Removes the event listener in target's event listener list with the same type, callback, and options.

MDN Reference

Parameters

type

string

callback

null | EventListenerOrEventListenerObject

options?

boolean | EventListenerOptions

Returns

void

Inherited from

EventEmitterLike.removeEventListener


setClientInfo()

setClientInfo(clientInfo): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:266

Sets the client information used in SABR requests.

Parameters

clientInfo

ClientInfo

The client information object.

Returns

void


setDurationMs()

setDurationMs(durationMs): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:242

Sets the total duration of the stream in milliseconds. This is optional as duration is often determined automatically from format metadata.

Parameters

durationMs

number

The duration in milliseconds.

Returns

void


setPoToken()

setPoToken(poToken): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:225

Sets Proof of Origin (PO) token.

Parameters

poToken

string

The base64-encoded token string.

Returns

void


setServerAbrFormats()

setServerAbrFormats(formats): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:233

Sets the available server ABR formats.

Parameters

formats

SabrFormat[]

An array of available SabrFormat objects.

Returns

void


setStreamingURL()

setStreamingURL(url): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:250

Sets the server ABR streaming URL for media requests.

Parameters

url

string

The streaming URL.

Returns

void


setUstreamerConfig()

setUstreamerConfig(config): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:258

Sets the Ustreamer configuration string.

Parameters

config

string

The Ustreamer configuration.

Returns

void


start()

start(options): Promise<{ audioStream: ReadableStream<Uint8Array<ArrayBufferLike>>; selectedFormats: SelectedFormats; videoStream: ReadableStream<Uint8Array<ArrayBufferLike>>; }>

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:331

Initiates the streaming process for the selected formats.

Parameters

options

SabrPlaybackOptions

Playback options, including format preferences and initial state.

Returns

Promise<{ audioStream: ReadableStream<Uint8Array<ArrayBufferLike>>; selectedFormats: SelectedFormats; videoStream: ReadableStream<Uint8Array<ArrayBufferLike>>; }>

A promise that resolves with the video/audio streams and selected formats.

Throws

If no suitable formats are found or streaming fails.

Events

on()

Call Signature

on(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:164

Fired when the server sends initialization metadata for a media format.

Parameters
event

"formatInitialization"

listener

(initializedFormat) => void

Returns

void

Overrides

EventEmitterLike.on

Call Signature

on(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:169

Fired when the server provides an update on the stream's content protection status.

Parameters
event

"streamProtectionStatusUpdate"

listener

(data) => void

Returns

void

Overrides

EventEmitterLike.on

Call Signature

on(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:174

Fired when the server directs the client to reload the player, usually indicating the current session is invalid.

Parameters
event

"reloadPlayerResponse"

listener

(reloadPlaybackContext) => void

Returns

void

Overrides

EventEmitterLike.on

Call Signature

on(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:179

Fired when the entire stream has been successfully downloaded.

Parameters
event

"finish"

listener

() => void

Returns

void

Overrides

EventEmitterLike.on

Call Signature

on(event, listener): void

Defined in: codeberg/googlevideo/src/core/SabrStream.ts:184

Fired when the download process is manually aborted via the abort() method.

Parameters
event

"abort"

listener

() => void

Returns

void

Overrides

EventEmitterLike.on

Edit this page
Last Updated: 7/24/25, 1:11 PM