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:
- Object.<string, shaka.hls.HlsParser.DrmParser_>
- 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:
- Object.<number, shaka.hls.HlsParser.StreamInfo>
- 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:
- Object.<number, !shaka.media.SegmentIndex>
- 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:
- Object.<string, shakaExtern.Variant>
- Source:
-
(private, non-null) uriToStreamInfosMap_ :Object.<string, shaka.hls.HlsParser.StreamInfo>
-
A map from media playlists' uris to stream infos representing the playlists.
Type:
- Object.<string, shaka.hls.HlsParser.StreamInfo>
- 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:
-
(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.ErrorReturns:
- 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:
- function(!shaka.hls.Tag): ?shakaExtern.DrmInfo
- Source:
-
StreamInfo
-
Contains a stream and information about it.
Type:
- {stream: !shakaExtern.Stream, segmentIndex: !shaka.media.SegmentIndex, drmInfos: !Array.<shakaExtern.DrmInfo>, relativeUri: !string, lastSegmentSeen: !shaka.media.SegmentReference}
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: