0.10.4 • Published 2 years ago
Share package
hls-parser Provides synchronous functions to read/write HLS playlists (conforms to the HLS spec rev.23 , the Apple Low-Latency Spec rev. 2020/02/05 , and HLS.js's Low-Latency spec )
Install
Usage const HLS = require('hls-parser'); // For node
// For browsers, just use dist/hls-parser.min.js defined as a UMD module.
// Parse the playlist
const playlist = HLS.parse(textData);
// You can access the playlist as a JS object
if (playlist.isMasterPlaylist) {
// Master playlist
} else {
// Media playlist
}
// Create a new playlist
const {MediaPlaylist, Segment} = HLS.types;
const obj = new MediaPlaylist({
targetDuration: 9,
playlistType: 'VOD',
segments: [
new Segment({
uri: 'low/1.m3u8',
duration: 9
})
]
});
// Convert the object into a text
HLS.stringify(obj);
/*
#EXTM3U
#EXT-X-TARGETDURATION:9
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:9,
low/1.m3u8
*/
API HLS.parse(str)
Converts a text playlist into a structured JS object
params return value An instance of either MasterPlaylist
or MediaPlaylist
(See Data format below.)
HLS.stringify(obj)
Converts a JS object into a plain text playlist
params Name Type Required Default Description obj MasterPlaylist
or MediaPlaylist
(See Data format below.)Yes N/A An object returned by HLS.parse()
or a manually created object
return value A text data that conforms to the HLS playlist spec
HLS.setOptions(obj)
Updates the option values
params Name Type Required Default Description obj Object Yes {} An object holding option values which will be used to overwrite the internal option values.
supported options Name Type Default Description strictMode
boolean false If true, the function throws an error when parse
/stringify
failed. If false, the function just logs the error and continues to run. allowClosedCaptionsNone
boolean false If true, CLOSED-CAPTIONS
attribute on the EXT-X-STREAM-INF
tag will be set to the enumerated-string value NONE when there are no closed-captions. See CLOSED-CAPTIONS silent
boolean false If true, console.error
will be suppressed.
HLS.getOptions()
Retrieves the current option values
return value A cloned object containing the current option values
HLS.types
An object that holds all the classes described below.
Data format This section describes the structure of the object returned by parse()
method.
Data
Property Type Required Default Description type
string Yes N/A Either playlist
or segment
or part
}
Playlist
(extends Data
)Property Type Required Default Description isMasterPlaylist
boolean Yes N/A true
if this playlist is a master playlisturi
string No undefined Playlist URL version
number No undefined See EXT-X-VERSION independentSegments
boolean No false See EXT-X-INDEPENDENT-SEGMENTS start
object({offset: number, precise: boolean}) No undefined See EXT-X-START source
string No undefined The unprocessed text of the playlist
MasterPlaylist
(extends Playlist
)Variant
Rendition
Property Type Required Default Description type
string Yes N/A See TYPE attribute in EXT-X-MEDIA uri
string No undefined See URI attribute in EXT-X-MEDIA groupId
string Yes N/A See GROUP-ID attribute in EXT-X-MEDIA language
string No undefined See LANGUAGE attribute in EXT-X-MEDIA assocLanguage
string No undefined See ASSOC-LANGUAGE attribute in EXT-X-MEDIA name
string Yes N/A See NAME attribute in EXT-X-MEDIA isDefault
boolean No false See DEFAULT attribute in EXT-X-MEDIA autoselect
boolean No false See AUTOSELECT attribute in EXT-X-MEDIA forced
boolean No false See FORCED attribute in EXT-X-MEDIA instreamId
string No undefined See INSTREAM-ID attribute in EXT-X-MEDIA characteristics
string No undefined See CHARACTERISTICS attribute in EXT-X-MEDIA channels
string No undefined See CHANNELS attribute in EXT-X-MEDIA
SessionData
MediaPlaylist
(extends Playlist
)Segment
(extends Data
)Property Type Required Default Description uri
string Yes* N/A URI of the media segment. *Not required if the segment contains EXT-X-PRELOAD-HINT
tag duration
number Yes* N/A See EXTINF *Not required if the segment contains EXT-X-PRELOAD-HINT
tag title
string No undefined See EXTINF byterange
object ({length: number, offset: number}) No undefined See EXT-X-BYTERANGE discontinuity
boolean No undefined See EXT-X-DISCONTINUITY mediaSequenceNumber
number No 0 See the description about 'Media Sequence Number' in 3. Media Segments discontinuitySequence
number No 0 See the description about 'Discontinuity Sequence Number' in 6.2.1. General Server Responsibilities key
Key
No undefined See EXT-X-KEY map
MediaInitializationSection
No undefined See EXT-X-MAP programDateTime
Date
No undefined See EXT-X-PROGRAM-DATE-TIME dateRange
DateRange
No undefined See EXT-X-DATERANGE markers
SpliceInfo
No [] SCTE-35 messages associated with this segment parts
PartialSegment
No [] Partial Segments that constitute this segment
PartialSegment
(extends Data
)Property Type Required Default Description hint
boolean No false true
indicates a hinted resource (TYPE=PART
) See EXT-X-PRELOAD-HINT uri
string Yes N/A See URI
attribute in EXT-X-PART duration
number Yes* N/A See DURATION
attribute in EXT-X-PART *Not required if hint
is true
independent
boolean No undefined See INDEPENDENT
attribute in EXT-X-PART byterange
object ({length: number, offset: number}) No undefined See BYTERANGE
attribute in EXT-X-PART gap
boolean No undefined See GAP
attribute in EXT-X-PART
PrefetchSegment
(extends Data
)Key
Property Type Required Default Description method
string Yes N/A See METHOD attribute in EXT-X-KEY uri
string No undefined See URI attribute in EXT-X-KEY iv
Buffer
(length=16)No undefined See IV attribute in EXT-X-KEY format
string No undefined See KEYFORMAT attribute in EXT-X-KEY formatVersion
string No undefined See KEYFORMATVERSIONS attribute in EXT-X-KEY
MediaInitializationSection
Property Type Required Default Description hint
boolean No false true
indicates a hinted resource (TYPE=MAP
) See EXT-X-PRELOAD-HINT uri
string Yes N/A See URI attribute in EXT-X-MAP byterange
object ({length: number, offset: number}) No undefined See BYTERANGE attribute in EXT-X-MAP
DateRange
Property Type Required Default Description id
string Yes N/A See ID attribute in EXT-X-DATERANGE classId
string No undefined See CLASS attribute in EXT-X-DATERANGE start
Date
No undefined See START-DATE attribute in EXT-X-DATERANGE end
Date
No undefined See END-DATE attribute in EXT-X-DATERANGE duration
number No undefined See DURATION attribute in EXT-X-DATERANGE plannedDuration
number No undefined See PLANNED-DURATION attribute in EXT-X-DATERANGE endOnNext
boolean No undefined See END-ON-NEXT attribute in EXT-X-DATERANGE attributes
object No {} A hash object that holds SCTE35 attributes and user defined attributes. See SCTE35-* and X- attributes in EXT-X-DATERANGE
SpliceInfo
Only EXT-X-CUE-OUT
and EXT-X-CUE-IN
tags are supported. Other SCTE-35-related tags are stored as raw (string) values.
Property Type Required Default Description type
string Yes N/A {'OUT', 'IN', 'RAW'} duration
number No undefined Required if the type
is 'OUT' tagName
string No undefined Holds the tag name if any unsupported tag are found. Required if the type
is 'RAW' value
string No undefined Holds a raw (string) value for the unsupported tag.
RenditionReport