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_ :Map<string, !MediaCapabilitiesDecodingInfo>
A cache of results from mediaCapabilities.decodingInfo, indexed by the
(stringified) decodingConfig.
Type:
- Map<string, !MediaCapabilitiesDecodingInfo>
- Source:
minImage_ :Map<string, string>
Type:
- Map<string, string>
- Source:
supportedImageMimeTypes_ :Map<string, boolean>
Type:
- Map<string, boolean>
- Source:
Methods
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
chapterStreamToTrack(stream) → {shaka.extern.ChapterTrack}
Parameters:
| Name | Type | Description |
|---|---|---|
stream |
shaka.extern.Stream |
- Source:
Returns:
checkEachDecodingConfigCombination_(decodingConfignon-null) → {Promise<?Array<!MediaCapabilitiesDecodingInfo>>}
Parameters:
| Name | Type | Description |
|---|---|---|
decodingConfig |
MediaDecodingConfiguration |
- Source:
Returns:
- Type
- Promise<?Array<!MediaCapabilitiesDecodingInfo>>
checkVariantSupported_(variantnon-null, keySystemnullable, keySystemsMappingnon-null) → {boolean}
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
variant |
shaka.extern.Variant | ||
keySystem |
string |
<nullable> |
|
keySystemsMapping |
Object<string, string> |
- 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:
createEmptyVariant(mimeTypesnon-null) → {shaka.extern.Variant}
Parameters:
| Name | Type | Description |
|---|---|---|
mimeTypes |
Array<string> |
- Source:
Returns:
- Type
- shaka.extern.Variant
createStream(overridesnon-null) → {shaka.extern.Stream}
Creates a Stream object, filling in default values for every field and
applying the given overrides on top. This avoids repeating the full set
of Stream defaults at the many call sites that build placeholder, dummy or
external streams. fullMimeTypes is derived from the resulting mimeType
and codecs; streams without a mimeType keep the default empty set.
Parameters:
| Name | Type | Description |
|---|---|---|
overrides |
Object<string, *> |
- Source:
Returns:
- Type
- shaka.extern.Stream
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, keySystemsMappingopt, non-null)
Alters the given Manifest to filter out any unplayable streams.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
drmEngine |
shaka.drm.DrmEngine | ||
manifest |
shaka.extern.Manifest | ||
preferredKeySystems |
Array<string> |
<optional> |
|
keySystemsMapping |
Object<string, string> |
<optional> |
- Source:
filterManifestByCurrentVariant(currentVariantnullable, manifest)
Alters the given Manifest to filter out any streams incompatible 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, keySystemsMappingnon-null)
Alters the given Manifest to filter out any streams unsupported by the
platform via MediaCapabilities.decodingInfo() API.
Parameters:
| Name | Type | Description |
|---|---|---|
drmEngine |
shaka.drm.DrmEngine | |
manifest |
shaka.extern.Manifest | |
usePersistentLicenses |
boolean | |
preferredKeySystems |
Array<string> | |
keySystemsMapping |
Object<string, 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:
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.AudioTrack}
Parameters:
| Name | Type | Description |
|---|---|---|
audioTrack |
AudioTrack |
- Source:
Returns:
html5TextTrackToChapterTrack(textTrack) → {shaka.extern.ChapterTrack}
Parameters:
| Name | Type | Description |
|---|---|---|
textTrack |
TextTrack |
- Source:
Returns:
html5TextTrackToTrack(textTrack, textVisibilityopt) → {shaka.extern.TextTrack}
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
textTrack |
TextTrack | |||
textVisibility |
boolean |
<optional> |
false |
- Source:
Returns:
html5TrackId(html5Track) → {number}
Generate and return an ID for this track, since the ID field is optional.
Parameters:
| Name | Type | Description |
|---|---|---|
html5Track |
TextTrack | AudioTrack | VideoTrack |
- Source:
Returns:
The generated ID.
- Type
- number
html5TrackToShakaTrack(audioTracknullable, videoTracknullable) → {shaka.extern.Track}
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
audioTrack |
AudioTrack |
<nullable> |
|
videoTrack |
VideoTrack |
<nullable> |
- Source:
Returns:
- Type
- shaka.extern.Track
imageStreamToTrack(stream) → {shaka.extern.ImageTrack}
Parameters:
| Name | Type | Description |
|---|---|---|
stream |
shaka.extern.Stream |
- Source:
Returns:
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.TextTrack}
Parameters:
| Name | Type | Description |
|---|---|---|
stream |
shaka.extern.Stream |
- Source:
Returns:
variantToTrack(variant) → {shaka.extern.Track}
Parameters:
| Name | Type | Description |
|---|---|---|
variant |
shaka.extern.Variant |
- Source:
Returns:
- Type
- shaka.extern.Track