Class: shaka.util.StreamUtils

A set of utility functions for dealing with Streams and Manifests.

Constructor

new StreamUtils()

A set of utility functions for dealing with Streams and Manifests.

Source:

Members

DecodingAttributes :string

Type:
  • string
Properties:
Name Value Type Description
SMOOTH smooth string
POWER powerEfficient string
Source:

decodingConfigCache_ :Object.<(!string), (!MediaCapabilitiesDecodingInfo)>

A cache of results from mediaCapabilities.decodingInfo, indexed by the (stringified) decodingConfig.
Type:
  • Object.<(!string), (!MediaCapabilitiesDecodingInfo)>
Source:

minAvifImage_ :string

Type:
  • string
Source:

minImage_ :Map.<string, string>

Type:
  • Map.<string, string>
Source:

minWebPImage_ :string

Type:
  • string
Source:

nextTrackId_ :number

Type:
  • number
Source:

supportedImageMimeTypes_ :Map.<string, boolean>

Type:
  • Map.<string, boolean>
Source:

Methods

alphabeticalKeyOrderStringify_(objnon-null) → {string}

Constructs a string out of an object, similar to the JSON.stringify method. Unlike that method, this guarantees that the order of the keys is alphabetical, so it can be used as a way to reliably compare two objects.
Parameters:
Name Type Description
obj Object
Source:
Returns:
Type
string

applyRestrictions(variantsnon-null, restrictions, maxHwRes) → {boolean}

Parameters:
Name Type Description
variants Array.<shaka.extern.Variant>
restrictions shaka.extern.Restrictions
maxHwRes shaka.extern.Resolution
Source:
Returns:
Whether the tracks changed.
Type
boolean

areStreamsCompatible_(s0, s1) → {boolean}

Parameters:
Name Type Description
s0 shaka.extern.Stream
s1 shaka.extern.Stream
Source:
Returns:
Type
boolean

checkEachDecodingConfigCombination_(decodingConfignon-null) → {Promise.<?Array.<!MediaCapabilitiesDecodingInfo>>}

Parameters:
Name Type Description
decodingConfig MediaDecodingConfiguration
Source:
Returns:
Type
Promise.<?Array.<!MediaCapabilitiesDecodingInfo>>

checkVariantSupported_(variantnon-null, keySystemnullable) → {boolean}

Parameters:
Name Type Attributes Description
variant shaka.extern.Variant
keySystem string <nullable>
Source:
Returns:
Type
boolean

chooseCodecsAndFilterManifest(manifestnon-null, preferredVideoCodecsnon-null, preferredAudioCodecsnon-null, preferredDecodingAttributesnon-null, preferredTextFormatsnon-null)

In case of multiple usable codecs, choose one based on lowest average bandwidth and filter out the rest. Also filters out variants that have too many audio channels.
Parameters:
Name Type Description
manifest shaka.extern.Manifest
preferredVideoCodecs Array.<string>
preferredAudioCodecs Array.<string>
preferredDecodingAttributes Array.<string>
preferredTextFormats Array.<string>
Source:

choosePreferredCodecs(variantsnon-null, preferredVideoCodecsnon-null, preferredAudioCodecsnon-null) → {Array.<shaka.extern.Variant>}

Choose the codecs by configured preferred audio and video codecs.
Parameters:
Name Type Description
variants Array.<shaka.extern.Variant>
preferredVideoCodecs Array.<string>
preferredAudioCodecs Array.<string>
Source:
Returns:
Type
Array.<shaka.extern.Variant>

clearDecodingConfigCache()

Clears underlying decoding config cache.
Source:

filterByRestrictions(manifestnon-null, restrictions, maxHwResolution)

Filter the variants in |manifest| to only include the variants that meet the given restrictions.
Parameters:
Name Type Description
manifest shaka.extern.Manifest
restrictions shaka.extern.Restrictions
maxHwResolution shaka.extern.Resolution
Source:

filterImageStreams_(manifest)

Alters the given Manifest to filter out any unsupported image streams.
Parameters:
Name Type Description
manifest shaka.extern.Manifest
Source:

filterManifest(drmEngine, manifest, preferredKeySystemsopt, non-null)

Alters the given Manifest to filter out any unplayable streams.
Parameters:
Name Type Attributes Description
drmEngine shaka.media.DrmEngine
manifest shaka.extern.Manifest
preferredKeySystems Array.<string> <optional>
Source:

filterManifestByCurrentVariant(currentVariantnullable, manifest)

Alters the given Manifest to filter out any streams uncompatible with the current variant.
Parameters:
Name Type Attributes Description
currentVariant shaka.extern.Variant <nullable>
manifest shaka.extern.Manifest
Source:

filterManifestByMediaCapabilities(drmEngine, manifest, usePersistentLicenses, preferredKeySystemsnon-null)

Alters the given Manifest to filter out any streams unsupported by the platform via MediaCapabilities.decodingInfo() API.
Parameters:
Name Type Description
drmEngine shaka.media.DrmEngine
manifest shaka.extern.Manifest
usePersistentLicenses boolean
preferredKeySystems Array.<string>
Source:

filterStreamsByLanguageAndRole(streams, preferredLanguage, preferredRole, preferredForced) → {!Array.<!shaka.extern.Stream>|!Array.<!shaka.extern.Track>}

Chooses streams according to the given config. Works both for Stream and Track types due to their similarities.
Parameters:
Name Type Description
streams !Array.<!shaka.extern.Stream> | !Array.<!shaka.extern.Track>
preferredLanguage string
preferredRole string
preferredForced boolean
Source:
Returns:
Type
!Array.<!shaka.extern.Stream> | !Array.<!shaka.extern.Track>

filterStreamsByRole_(streams, preferredRole) → {!Array.<!shaka.extern.Stream>|!Array.<!shaka.extern.Track>}

Filter Streams by role. Works both for Stream and Track types due to their similarities.
Parameters:
Name Type Description
streams !Array.<!shaka.extern.Stream> | !Array.<!shaka.extern.Track>
preferredRole string
Source:
Returns:
Type
!Array.<!shaka.extern.Stream> | !Array.<!shaka.extern.Track>

filterTextStreams_(manifest)

Alters the given Manifest to filter out any unsupported text streams.
Parameters:
Name Type Description
manifest shaka.extern.Manifest
Source:

getCorrectAudioCodecs(codecs, mimeType) → {string}

Generates the correct audio codec for MediaDecodingConfiguration and for MediaSource.isTypeSupported.
Parameters:
Name Type Description
codecs string
mimeType string
Source:
Returns:
Type
string

getCorrectVideoCodecs(codec) → {string}

Generates the correct video codec for MediaDecodingConfiguration and for MediaSource.isTypeSupported.
Parameters:
Name Type Description
codec string
Source:
Returns:
Type
string

getDecodingConfigs_(variantnon-null, usePersistentLicenses, srcEquals) → {Array.<!Array.<!MediaDecodingConfiguration>>}

Generate a batch of MediaDecodingConfiguration objects to get the decodingInfo results for each variant. Each batch shares the same DRM information, and represents the various fullMimeType combinations of the streams.
Parameters:
Name Type Description
variant shaka.extern.Variant
usePersistentLicenses boolean
srcEquals boolean
Source:
Returns:
Type
Array.<!Array.<!MediaDecodingConfiguration>>

getDecodingInfosForVariant_(variantnon-null, decodingConfigsnon-null)

Queries mediaCapabilities for the decoding info for that decoding config, and assigns it to the given variant. If that query has been done before, instead return a cached result.
Parameters:
Name Type Description
variant shaka.extern.Variant
decodingConfigs Array.<!MediaDecodingConfiguration>
Source:

getDecodingInfosForVariants(variantsnon-null, usePersistentLicenses, srcEquals, preferredKeySystemsnon-null)

Get the decodingInfo results of the variants via MediaCapabilities. This should be called after the DrmEngine is created and configured, and before DrmEngine sets the mediaKeys.
Parameters:
Name Type Description
variants Array.<shaka.extern.Variant>
usePersistentLicenses boolean
srcEquals boolean
preferredKeySystems Array.<string>
Source:

getPlayableVariants(variantsnon-null) → {Array.<!shaka.extern.Variant>}

Filters out unplayable variants.
Parameters:
Name Type Description
variants Array.<!shaka.extern.Variant>
Source:
Returns:
Type
Array.<!shaka.extern.Variant>

getStreamSummaryString_(stream) → {string}

Returns a string of an audio or video stream for log printing.
Parameters:
Name Type Description
stream shaka.extern.Stream
Source:
Returns:
Type
string

getVariantStreams(variant) → {Array.<shaka.extern.Stream>}

Get all non-null streams in the variant as an array.
Parameters:
Name Type Description
variant shaka.extern.Variant
Source:
Returns:
Type
Array.<shaka.extern.Stream>

getVariantSummaryString_(variant) → {string}

Returns a string of a variant, with the attribute values of its audio and/or video streams for log printing.
Parameters:
Name Type Description
variant shaka.extern.Variant
Source:
Returns:
Type
string

html5AudioTrackToTrack(audioTrack) → {shaka.extern.Track}

Parameters:
Name Type Description
audioTrack AudioTrack
Source:
Returns:
Type
shaka.extern.Track

html5TextTrackToTrack(textTrack) → {shaka.extern.Track}

Parameters:
Name Type Description
textTrack TextTrack
Source:
Returns:
Type
shaka.extern.Track

html5TrackId(html5Track) → {number}

Generate and return an ID for this track, since the ID field is optional.
Parameters:
Name Type Description
html5Track TextTrack | AudioTrack
Source:
Returns:
The generated ID.
Type
number

html5TrackToGenericShakaTrack_(html5Track) → {shaka.extern.Track}

Creates a Track object with non-type specific fields filled out. The caller is responsible for completing the Track object with any type-specific information (audio or text).
Parameters:
Name Type Description
html5Track TextTrack | AudioTrack
Source:
Returns:
Type
shaka.extern.Track

imageStreamToTrack(stream) → {shaka.extern.Track}

Parameters:
Name Type Description
stream shaka.extern.Stream
Source:
Returns:
Type
shaka.extern.Track

isAudio(stream) → {boolean}

Checks if the given stream is an audio stream.
Parameters:
Name Type Description
stream shaka.extern.Stream
Source:
Returns:
Type
boolean

isFastSwitching(variant) → {boolean}

Indicates if some of the variant's streams are fastSwitching.
Parameters:
Name Type Description
variant shaka.extern.Variant
Source:
Returns:
Type
boolean

isImageSupported_(minImage) → {Promise.<boolean>}

Parameters:
Name Type Description
minImage string
Source:
Returns:
Type
Promise.<boolean>

isPlayable(variantnon-null) → {boolean}

Determines if the given variant is playable.
Parameters:
Name Type Description
variant shaka.extern.Variant
Source:
Returns:
Type
boolean

isVideo(stream) → {boolean}

Checks if the given stream is a video stream.
Parameters:
Name Type Description
stream shaka.extern.Stream
Source:
Returns:
Type
boolean

meetsRestrictions(variant, restrictions, maxHwRes) → {boolean}

Parameters:
Name Type Description
variant shaka.extern.Variant
restrictions shaka.extern.Restrictions Configured restrictions from the user.
maxHwRes shaka.extern.Resolution The maximum resolution the hardware can handle. This is applied separately from user restrictions because the setting should not be easily replaced by the user's configuration.
Source:
Returns:
Type
boolean

overrideDolbyVisionCodecs(variantsnon-null)

Maps Dolby Vision codecs to H.264 and H.265 equivalents as a workaround to make Dolby Vision playback work on some platforms. Mapping is done according to the relevant Dolby documentation found here: https://professionalsupport.dolby.com/s/article/How-to-signal-Dolby-Vision-in-MPEG-DASH?language=en_US
Parameters:
Name Type Description
variants Array.<!shaka.extern.Variant>
Source:

setBetterIFrameStream(streamnon-null, iFrameStreamsnon-null)

Set the best iframe stream to the original stream.
Parameters:
Name Type Description
stream shaka.extern.Stream
iFrameStreams Array.<!shaka.extern.Stream>
Source:

textStreamToTrack(stream) → {shaka.extern.Track}

Parameters:
Name Type Description
stream shaka.extern.Stream
Source:
Returns:
Type
shaka.extern.Track

variantToTrack(variant) → {shaka.extern.Track}

Parameters:
Name Type Description
variant shaka.extern.Variant
Source:
Returns:
Type
shaka.extern.Track