Class: shaka.hls.HlsParser

Constructor

new HlsParser()

Creates a new HLS parser.
Implements:
Source:

Members

(private, static, constant, non-null) AUDIO_CODEC_REGEXPS_ :Array.<!RegExp>

A list of regexps to detect well-known audio codecs.
Type:
  • Array.<!RegExp>
Source:

(private, static, constant, non-null) AUDIO_EXTENSIONS_TO_MIME_TYPES_ :Object.<string, string>

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

(private, static, constant, non-null) CODEC_REGEXPS_BY_CONTENT_TYPE_ :Object.<string, !Array.<!RegExp>>

Type:
  • Object.<string, !Array.<!RegExp>>
Source:

(private, static, constant, non-null) EXTENSION_MAP_BY_CONTENT_TYPE_ :Object.<string, !Object.<string, string>>

Type:
  • Object.<string, !Object.<string, string>>
Source:

(private, static, constant, non-null) KEYFORMATS_TO_DRM_PARSERS_ :Object.<string, shaka.hls.HlsParser.DrmParser_>

Type:
Source:

(private, static, constant, non-null) TEXT_CODEC_REGEXPS_ :Array.<!RegExp>

A list of regexps to detect well-known text codecs.
Type:
  • Array.<!RegExp>
Source:

(private, static, constant, non-null) TEXT_EXTENSIONS_TO_MIME_TYPES_ :Object.<string, string>

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

(private, static, constant, non-null) VIDEO_CODEC_REGEXPS_ :Array.<!RegExp>

A list of regexps to detect well-known video codecs.
Type:
  • Array.<!RegExp>
Source:

(private, static, constant, non-null) VIDEO_EXTENSIONS_TO_MIME_TYPES_ :Object.<string, string>

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

(private, nullable) config_ :shakaExtern.ManifestConfiguration

Type:
Source:

(private) globalId_ :number

Type:
  • number
Source:

(private) isLive_ :boolean

Type:
  • boolean
Source:

(private, nullable) manifest_ :shakaExtern.Manifest

Type:
Source:

(private) manifestTextParser_ :shaka.hls.ManifestTextParser

Type:
Source:

(private) manifestUri_ :string

Type:
  • string
Source:

(private) maxTargetDuration_ :number

Type:
  • number
Source:

(private, non-null) mediaTagsToStreamInfosMap_ :Object.<number, shaka.hls.HlsParser.StreamInfo>

Type:
Source:

(private, nullable) playerInterface_ :shakaExtern.ManifestParser.PlayerInterface

Type:
Source:

(private, nullable) presentationTimeline_ :shaka.media.PresentationTimeline

Type:
Source:

(private, non-null) streamsToIndexMap_ :Object.<number, !shaka.media.SegmentIndex>

Type:
Source:

(private, nullable) updatePeriod_ :number

The update period in seconds; or null for no updates.
Type:
  • number
Source:

(private, nullable) updateTimer_ :number

Type:
  • number
Source:

(private, non-null) urisToVariantsMap_ :Object.<string, shakaExtern.Variant>

The key is a string of the form "
Type:
Source:

(private, non-null) uriToStreamInfosMap_ :Object.<string, shaka.hls.HlsParser.StreamInfo>

A map from media playlists' uris to stream infos representing the playlists.
Type:
Source:

Methods

(private, static) getRequiredAttributeValue_(tag, attributeNamenon-null) → (non-null) {string}

Find the attribute and returns its value. Throws an error if attribute was not found.
Parameters:
Name Type Description
tag shaka.hls.Tag
attributeName string
Source:
Throws:
Returns:
Type
string

(private, static) widevineDrmParser_(drmTagnon-null) → (nullable) {shakaExtern.DrmInfo}

Parameters:
Name Type Description
drmTag shaka.hls.Tag
Source:
Returns:
Type
shakaExtern.DrmInfo

(private) addVideoAttributes_(stream, widthnullable, heightnullable, frameRatenullable)

Parameters:
Name Type Attributes Description
stream shakaExtern.Stream
width string <nullable>
height string <nullable>
frameRate string <nullable>
Source:

(private) adjustSegments_(segmentsnon-null, lastSegmentSeennon-null) → (non-null) {Array.<!shaka.media.SegmentReference>}

The manifest doesn't specify segments' start and end times. We assume the first segment starts at 0 and base the following segments on this assumption (each segment's starts when previous ends). This method adjusts new segments' (added on update) timeline with respect to previously appended segments.
Parameters:
Name Type Description
segments Array.<!shaka.media.SegmentReference>
lastSegmentSeen shaka.media.SegmentReference
Source:
Returns:
Type
Array.<!shaka.media.SegmentReference>

configure(config)

Called by the Player to provide an updated configuration any time the configuration changes. Will be called at least once before start().
Parameters:
Name Type Description
config shakaExtern.ManifestConfiguration
Implements:
Source:

(private) createInitSegmentReference_(playlistnon-null) → {shaka.media.InitSegmentReference}

Parameters:
Name Type Description
playlist shaka.hls.Playlist
Source:
Throws:
Returns:
Type
shaka.media.InitSegmentReference

(private) createPeriod_(playlistnon-null) → (non-null) {Promise.<!shakaExtern.Period>}

Parses a playlist into a Period object.
Parameters:
Name Type Description
playlist shaka.hls.Playlist
Source:
Returns:
Type
Promise.<!shakaExtern.Period>

(private) createPresentationTimeline_(endTime)

Parameters:
Name Type Description
endTime number
Source:
Throws:
shaka.util.Error

(private) createSegments_(playlistnon-null, startPosition) → (non-null) {Array.<!shaka.media.SegmentReference>}

Parses shaka.hls.Segment objects into shaka.media.SegmentReferences.
Parameters:
Name Type Description
playlist shaka.hls.Playlist
startPosition number
Source:
Returns:
Type
Array.<!shaka.media.SegmentReference>

(private) createStreamInfo_(urinon-null, allCodecsnon-null, typenon-null, timeOffsetnullable, languagenon-null, primary, labelnullable, channelsCountnullable) → (non-null) {Promise.<shaka.hls.HlsParser.StreamInfo>}

Parameters:
Name Type Attributes Description
uri string
allCodecs Array.<!string>
type string
timeOffset number <nullable>
language string
primary boolean
label string <nullable>
channelsCount number <nullable>
Source:
Throws:
shaka.util.Error
Returns:
Type
Promise.<shaka.hls.HlsParser.StreamInfo>

(private) createStreamInfoFromMediaTag_(tag, allCodecsnon-null, timeOffsetnullable) → (non-null) {Promise.<shaka.hls.HlsParser.StreamInfo>}

Parse EXT-X-MEDIA media tag into a Stream object.
Parameters:
Name Type Attributes Description
tag shaka.hls.Tag
allCodecs Array.<!string>
timeOffset number <nullable>
Source:
Returns:
Type
Promise.<shaka.hls.HlsParser.StreamInfo>

(private) createStreamInfoFromVariantTag_(tagnon-null, allCodecsnon-null, typenon-null, timeOffsetnullable) → (non-null) {Promise.<shaka.hls.HlsParser.StreamInfo>}

Parse EXT-X-STREAM-INF media tag into a Stream object.
Parameters:
Name Type Attributes Description
tag shaka.hls.Tag
allCodecs Array.<!string>
type string
timeOffset number <nullable>
Source:
Returns:
Type
Promise.<shaka.hls.HlsParser.StreamInfo>

(private) createTextStream_(tagnon-null, playlistnon-null) → (non-null) {Promise.<?shakaExtern.Stream>}

Parses an EXT-X-MEDIA tag with TYPE="SUBTITLES" into a text stream.
Parameters:
Name Type Description
tag shaka.hls.Tag
playlist shaka.hls.Playlist
Source:
Returns:
Type
Promise.<?shakaExtern.Stream>

(private) createVariant_(audio, video, bandwidth, drmInfosnon-null) → (non-null) {shakaExtern.Variant}

Parameters:
Name Type Description
audio shakaExtern.Stream
video shakaExtern.Stream
bandwidth number
drmInfos Array.<shakaExtern.DrmInfo>
Source:
Returns:
Type
shakaExtern.Variant

(private) createVariants_(audioInfosnon-null, videoInfosnon-null, bandwidth, widthnullable, heightnullable, frameRatenullable) → (non-null) {Array.<!shakaExtern.Variant>}

Parameters:
Name Type Attributes Description
audioInfos Array.<!shaka.hls.HlsParser.StreamInfo>
videoInfos Array.<!shaka.hls.HlsParser.StreamInfo>
bandwidth number
width string <nullable>
height string <nullable>
frameRate string <nullable>
Source:
Returns:
Type
Array.<!shakaExtern.Variant>

(private) createVariantsForTag_(tagnon-null, playlistnon-null) → (non-null) {Promise.<!Array.<!shakaExtern.Variant>>}

Parameters:
Name Type Description
tag shaka.hls.Tag
playlist shaka.hls.Playlist
Source:
Returns:
Type
Promise.<!Array.<!shakaExtern.Variant>>

(private) fitSegments_(variantsnon-null)

Adjusts segment references of every stream of every variant to the timeline of the presentation.
Parameters:
Name Type Description
variants Array.<!shakaExtern.Variant>
Source:

(private) getChannelsCount_(channelsnullable) → (nullable) {number}

Get the channels count information for HLS audio track. The channels value is a string that specifies an ordered, "/" separated list of parameters. If the type is audio, the first parameter will be a decimal integer, as the number of independent, simultaneous audio channels. No other channels parameters are currently defined.
Parameters:
Name Type Attributes Description
channels string <nullable>
Source:
Returns:
channelcount
Type
number

(private) getRequiredTag_(tagsnon-null, tagNamenon-null) → (non-null) {shaka.hls.Tag}

Returns a tag with a given name. Throws an error if tag was not found.
Parameters:
Name Type Description
tags Array.<shaka.hls.Tag>
tagName string
Source:
Throws:
Returns:
Type
shaka.hls.Tag

(private) getTimeOffset_(playlistnon-null) → (nullable) {number}

Get presentation time offset of the playlist if it has been specified. Return null otherwise.
Parameters:
Name Type Description
playlist shaka.hls.Playlist
Source:
Returns:
Type
number

(private) guessCodecs_(contentTypenon-null, codecsnon-null) → {string}

Attempts to guess which codecs from the codecs list belong to a given content type. Assumes a single codec is correct, and throws if not found.
Parameters:
Name Type Description
contentType string
codecs Array.<!string>
Source:
Throws:
Returns:
Type
string

(private) guessCodecsSafe_(contentTypenon-null, codecsnon-null) → (nullable) {string}

Attempts to guess which codecs from the codecs list belong to a given content type. Does not assume a single codec is anything special, and does not throw if it fails to match.
Parameters:
Name Type Description
contentType string
codecs Array.<!string>
Source:
Returns:
or null if no match is found
Type
string

(private) guessMimeType_(contentTypenon-null, codecsnon-null, urinon-null) → (non-null) {Promise.<!string>}

Attempts to guess stream's mime type based on content type and uri.
Parameters:
Name Type Description
contentType string
codecs string
uri string
Source:
Throws:
Returns:
Type
Promise.<!string>

onExpirationUpdated(sessionId, expiration)

Tells the parser that the expiration time of an EME session has changed. Implementing this is optional.
Parameters:
Name Type Description
sessionId string
expiration number
Implements:
Source:

(private) onUpdate_()

Called when the update timer ticks.
Source:

(private) parseManifest_(datanon-null, uri) → (non-null) {Promise}

Parses the manifest.
Parameters:
Name Type Description
data ArrayBuffer
uri string
Source:
Throws:
shaka.util.Error When there is a parsing error.
Returns:
Type
Promise

(private) requestManifest_(urinon-null) → (non-null) {Promise.<!shakaExtern.Response>}

Makes a network request for the manifest and returns a Promise with the resulting data.
Parameters:
Name Type Description
uri string
Source:
Returns:
Type
Promise.<!shakaExtern.Response>

(private) setLive_(live)

Parameters:
Name Type Description
live boolean
Source:

(private) setPresentationType_(playlistnon-null)

Parameters:
Name Type Description
playlist shaka.hls.Playlist
Source:
Throws:
shaka.util.Error

(private) setUpdateTimer_(timenullable)

Sets the update timer.
Parameters:
Name Type Attributes Description
time number <nullable>
in seconds
Source:

start(uri, playerInterface) → (non-null) {Promise.<shakaExtern.Manifest>}

Parses the given manifest data into a Manifest object and starts any background timers that are needed. This will only be called once.
Parameters:
Name Type Description
uri string The URI of the manifest.
playerInterface shakaExtern.ManifestParser.PlayerInterface Contains the interface to the Player.
Implements:
Source:
Returns:
Type
Promise.<shakaExtern.Manifest>

stop() → (non-null) {Promise}

Stops any background timers and frees any objects held by this instance. This will only be called after a successful call to start. This will only be called once.
Implements:
Source:
Returns:
Type
Promise

update()

Tells the parser to do a manual manifest update. Implementing this is optional and is only called when 'emsg' boxes are present.
Implements:
Source:

(private) updateStream_(streamInfonon-null, uri)

Updates a stream.
Parameters:
Name Type Description
streamInfo shaka.hls.HlsParser.StreamInfo
uri string
Source:
Throws:
shaka.util.Error

Type Definitions

DrmParser_

Type:
Source:

StreamInfo

Contains a stream and information about it.
Type:
Properties:
Name Type Description
stream shakaExtern.Stream The Stream itself.
segmentIndex shaka.media.SegmentIndex SegmentIndex of the stream.
drmInfos Array.<shakaExtern.DrmInfo> DrmInfos of the stream. There may be multiple for multi-DRM content.
relativeUri string The uri associated with the stream, relative to the manifest.
lastSegmentSeen shaka.media.SegmentReference Last segment of the stream seen so far.
Source: