2018-02-10 23:37:42 +00:00
2020-01-22 00:59:16 +00:00
<!DOCTYPE html>
2017-09-20 02:35:05 +00:00
2021-04-10 04:00:37 +00:00
< html >
2017-09-20 02:35:05 +00:00
< head >
2020-01-22 00:59:16 +00:00
< meta charset = "utf-8" / >
2021-06-22 00:16:40 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / > < meta name = "generator" content = "Docutils 0.17.1: http://docutils.sourceforge.net/" / >
2017-09-20 02:35:05 +00:00
< title > HLS — Shaka Packager documentation< / title >
2021-06-22 00:16:40 +00:00
< link rel = "stylesheet" type = "text/css" href = "../_static/pygments.css" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/sphinxdoc_new.css" / >
2020-01-22 00:59:16 +00:00
< link rel = "stylesheet" type = "text/css" href = "../_static/graphviz.css" / >
< link rel = "stylesheet" type = "text/css" href = "../_static/table_styling.css" / >
2021-06-22 00:16:40 +00:00
< script data-url_root = "../" id = "documentation_options" src = "../_static/documentation_options.js" > < / script >
2021-04-10 04:00:37 +00:00
< script src = "../_static/jquery.js" > < / script >
< script src = "../_static/underscore.js" > < / script >
< script src = "../_static/doctools.js" > < / script >
2017-09-20 02:35:05 +00:00
< link rel = "index" title = "Index" href = "../genindex.html" / >
< link rel = "search" title = "Search" href = "../search.html" / >
< link rel = "next" title = "Live" href = "live.html" / >
< link rel = "prev" title = "DASH" href = "dash.html" / >
2020-01-22 00:59:16 +00:00
< / head > < body >
2017-09-20 02:35:05 +00:00
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../genindex.html" title = "General Index"
accesskey="I">index< / a > < / li >
< li class = "right" >
< a href = "live.html" title = "Live"
accesskey="N">next< / a > |< / li >
< li class = "right" >
< a href = "dash.html" title = "DASH"
accesskey="P">previous< / a > |< / li >
< li class = "nav-item nav-item-0" > < a href = "../index.html" > Shaka Packager documentation< / a > » < / li >
2021-04-10 04:00:37 +00:00
< li class = "nav-item nav-item-1" > < a href = "tutorials.html" accesskey = "U" > Tutorials< / a > » < / li >
< li class = "nav-item nav-item-this" > < a href = "" > HLS< / a > < / li >
2017-09-20 02:35:05 +00:00
< / ul >
2021-04-10 04:00:37 +00:00
< / div >
2017-09-20 02:35:05 +00:00
< div class = "document" >
< div class = "documentwrapper" >
< div class = "bodywrapper" >
< div class = "body" role = "main" >
2021-06-22 00:16:40 +00:00
< section id = "hls" >
2017-09-20 02:35:05 +00:00
< h1 > HLS< a class = "headerlink" href = "#hls" title = "Permalink to this headline" > ¶< / a > < / h1 >
< p > HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming
communications protocol implemented by Apple Inc. as part of its QuickTime,
Safari, OS X, and iOS software. It resembles MPEG-DASH in that it works by
breaking the overall stream into a sequence of small HTTP-based file downloads,
each download loading one short chunk of an overall potentially unbounded
transport stream. As the stream is played, the client may select from a number
of different alternate streams containing the same material encoded at a variety
of data rates, allowing the streaming session to adapt to the available data
rate. At the start of the streaming session, HLS downloads an extended M3U
playlist containing the metadata for the various sub-streams which are
available.< / p >
< p > Shaka Packager supports HLS content packaging. This tutorial covers HLS
packaging of VOD content without encryption. For live content packaging, see
2018-02-10 23:37:42 +00:00
< a class = "reference internal" href = "live.html" > < span class = "doc" > Live< / span > < / a > ; for content encryption, see < a class = "reference internal" href = "drm.html" > < span class = "doc" > DRM< / span > < / a > ; for full documentation,
see < a class = "reference internal" href = "../documentation.html" > < span class = "doc" > Packager Documentation< / span > < / a > .< / p >
2021-06-22 00:16:40 +00:00
< section id = "synopsis" >
2017-09-20 02:35:05 +00:00
< h2 > Synopsis< a class = "headerlink" href = "#synopsis" title = "Permalink to this headline" > ¶< / a > < / h2 >
2020-01-22 00:59:16 +00:00
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > $ packager < stream_descriptor> ... \
2018-05-23 23:12:00 +00:00
--hls_master_playlist_output < master_playlist_output_path> \
2017-09-20 02:35:05 +00:00
[Other HLS options] \
[Other options, e.g. DRM options, DASH options]
< / pre > < / div >
< / div >
< p > See < a class = "reference internal" href = "#hls-specific-stream-descriptor-fields" > HLS specific stream descriptor fields< / a > for the available HLS specific
stream descriptor fields.< / p >
< p > See < a class = "reference internal" href = "#hls-options" > HLS options< / a > for the available HLS related options.< / p >
< div class = "admonition note" >
2020-01-22 00:59:16 +00:00
< p class = "admonition-title" > Note< / p >
< p > DASH and HLS options can both be specified to output DASH and HLS manifests
2017-09-20 02:35:05 +00:00
at the same time. Note that it works only for MP4 outputs.< / p >
< / div >
2021-06-22 00:16:40 +00:00
< / section >
< section id = "examples" >
2017-09-20 02:35:05 +00:00
< h2 > Examples< a class = "headerlink" href = "#examples" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > The examples below uses the H264 streams created in < a class = "reference internal" href = "encoding.html" > < span class = "doc" > Media Encoding< / span > < / a > .< / p >
< ul >
2020-01-22 00:59:16 +00:00
< li > < p > TS output with elementary audio:< / p >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > $ packager \
2018-05-23 23:12:00 +00:00
' in=h264_baseline_360p_600.mp4,stream=audio,segment_template=audio/$Number$.aac,playlist_name=audio/main.m3u8,hls_group_id=audio,hls_name=ENGLISH' \
2018-02-10 23:37:42 +00:00
' in=input_text.vtt,stream=text,segment_template=text/$Number$.vtt,playlist_name=text/main.m3u8,hls_group_id=text,hls_name=ENGLISH' \
' in=h264_baseline_360p_600.mp4,stream=video,segment_template=h264_360p/$Number$.ts,playlist_name=h264_360p/main.m3u8,iframe_playlist_name=h264_360p/iframe.m3u8' \
' in=h264_main_480p_1000.mp4,stream=video,segment_template=h264_480p/$Number$.ts,playlist_name=h264_480p/main.m3u8,iframe_playlist_name=h264_480p/iframe.m3u8' \
' in=h264_main_720p_3000.mp4,stream=video,segment_template=h264_720p/$Number$.ts,playlist_name=h264_720p/main.m3u8,iframe_playlist_name=h264_720p/iframe.m3u8' \
' in=h264_high_1080p_6000.mp4,stream=video,segment_template=h264_1080p/$Number$.ts,playlist_name=h264_1080p/main.m3u8,iframe_playlist_name=h264_1080p/iframe.m3u8' \
2017-09-20 02:35:05 +00:00
--hls_master_playlist_output h264_master.m3u8
< / pre > < / div >
< / div >
< / li >
< / ul >
< p > The above packaging command creates five single track TS streams
2018-02-10 23:37:42 +00:00
(4 video, 1 audio) and HLS playlists, which describe the streams.< / p >
2017-09-20 02:35:05 +00:00
< ul >
2020-01-22 00:59:16 +00:00
< li > < p > MP4 output is also supported:< / p >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > $ packager \
2018-02-10 23:37:42 +00:00
' in=h264_baseline_360p_600.mp4,stream=audio,init_segment=audio/init.mp4,segment_template=audio/$Number$.m4s,playlist_name=audio/main.m3u8,hls_group_id=audio,hls_name=ENGLISH' \
' in=input_text.vtt,stream=text,segment_template=text/$Number$.vtt,playlist_name=text/main.m3u8,hls_group_id=text,hls_name=ENGLISH' \
' in=h264_baseline_360p_600.mp4,stream=video,init_segment=h264_360p/init.mp4,segment_template=h264_360p/$Number$.m4s,playlist_name=h264_360p/main.m3u8,iframe_playlist_name=h264_360p/iframe.m3u8' \
' in=h264_main_480p_1000.mp4,stream=video,init_segment=h264_480p/init.mp4,segment_template=h264_480p/$Number$.m4s,playlist_name=h264_480p/main.m3u8,iframe_playlist_name=h264_480p/iframe.m3u8' \
' in=h264_main_720p_3000.mp4,stream=video,init_segment=h264_720p/init.mp4,segment_template=h264_720p/$Number$.m4s,playlist_name=h264_720p/main.m3u8,iframe_playlist_name=h264_720p/iframe.m3u8' \
2018-08-16 00:35:22 +00:00
' in=h264_high_1080p_6000.mp4,stream=video,init_segment=h264_1080p/init.mp4,segment_template=h264_1080p/$Number$.m4s,playlist_name=h264_1080p/main.m3u8,iframe_playlist_name=h264_1080p/iframe.m3u8' \
2017-09-20 02:35:05 +00:00
--hls_master_playlist_output h264_master.m3u8
< / pre > < / div >
< / div >
< / li >
2018-02-10 23:37:42 +00:00
< / ul >
< p > The above packaging command creates five groups of streams (each with an init
segment and a series of media segments) and HLS playlists, which describe the
streams.< / p >
< ul >
2020-01-22 00:59:16 +00:00
< li > < p > Single file MP4 output is also supported:< / p >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > $ packager \
2017-09-20 02:35:05 +00:00
in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4,playlist_name=audio.m3u8,hls_group_id=audio,hls_name=ENGLISH \
in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4,playlist_name=h264_360p.m3u8 \
in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4,playlist_name=h264_480p.m3u8 \
in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4,playlist_name=h264_720p.m3u8 \
in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4,playlist_name=h264_1080p.m3u8 \
--hls_master_playlist_output h264_master.m3u8
< / pre > < / div >
< / div >
< / li >
< / ul >
2018-02-10 23:37:42 +00:00
< p > The above packaging command creates five single file MP4 streams and HLS
playlists, which describe the streams.< / p >
< ul >
2020-01-22 00:59:16 +00:00
< li > < p > Single file MP4 output with DASH + HLS:< / p >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > $ packager \
2018-02-10 23:37:42 +00:00
in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4,playlist_name=audio.m3u8,hls_group_id=audio,hls_name=ENGLISH \
in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4,playlist_name=h264_360p.m3u8,iframe_playlist_name=h264_360p_iframe.m3u8 \
in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4,playlist_name=h264_480p.m3u8,iframe_playlist_name=h264_480p_iframe.m3u8 \
in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4,playlist_name=h264_720p.m3u8,iframe_playlist_name=h264_720p_iframe.m3u8 \
in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4,playlist_name=h264_1080p.m3u8,iframe_playlist_name=h264_1080p_iframe.m3u8 \
--hls_master_playlist_output h264_master.m3u8 \
--mpd_output h264.mpd
< / pre > < / div >
< / div >
< / li >
< / ul >
< p > The above packaging command creates five single file MP4 streams, and HLS
playlists as well as DASH manifests.< / p >
2021-04-10 04:00:37 +00:00
< ul >
2021-06-11 04:44:53 +00:00
< li > < p > Output DASH + HLS with dash_only and hls_only options:< / p >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > $ packager \
' in=h264_baseline_360p_600.mp4,stream=audio,init_segment=audio/init.mp4,segment_template=audio/$Number$.m4s' \
' in=input_text.vtt,stream=text,init_segment=text/init.mp4,segment_template=text/$Number$.m4s,dash_only=1' \
' in=input_text.vtt,stream=text,segment_template=text/$Number$.vtt,hls_only=1' \
' in=h264_baseline_360p_600.mp4,stream=video,init_segment=h264_360p/init.mp4,segment_template=h264_360p/$Number$.m4s' \
' in=h264_main_480p_1000.mp4,stream=video,init_segment=h264_480p/init.mp4,segment_template=h264_480p/$Number$.m4s' \
' in=h264_main_720p_3000.mp4,stream=video,init_segment=h264_720p/init.mp4,segment_template=h264_720p/$Number$.m4s' \
' in=h264_high_1080p_6000.mp4,stream=video,init_segment=h264_1080p/init.mp4,segment_template=h264_1080p/$Number$.m4s' \
--generate_static_live_mpd --mpd_output h264.mpd \
--hls_master_playlist_output h264_master.m3u8
< / pre > < / div >
< / div >
2021-04-10 04:00:37 +00:00
< / li >
< / ul >
< p > The above packaging command creates HLS playlists and DASH manifest while using
dash_only for creating segmented WebVTT in mp4 format and hls_only option for
creating WebVTT in text format.< / p >
2021-06-22 00:16:40 +00:00
< / section >
< section id = "configuration-options" >
2018-08-20 17:47:59 +00:00
< h2 > Configuration options< a class = "headerlink" href = "#configuration-options" title = "Permalink to this headline" > ¶< / a > < / h2 >
2021-06-22 00:16:40 +00:00
< section id = "hls-specific-stream-descriptor-fields" >
2017-09-20 02:35:05 +00:00
< h3 > HLS specific stream descriptor fields< a class = "headerlink" href = "#hls-specific-stream-descriptor-fields" title = "Permalink to this headline" > ¶< / a > < / h3 >
2020-01-22 00:59:16 +00:00
< dl class = "field-list simple" >
< dt class = "field-odd" > hls_name< / dt >
< dd class = "field-odd" > < p > Used for HLS audio to set the NAME attribute for EXT-X-MEDIA.
Defaults to the base of the playlist name.< / p >
< / dd >
< dt class = "field-even" > hls_group_id< / dt >
< dd class = "field-even" > < p > Used for HLS audio to set the GROUP-ID attribute for EXT-X-MEDIA.
Defaults to ‘ audio’ if not specified.< / p >
< / dd >
< dt class = "field-odd" > playlist_name< / dt >
< dd class = "field-odd" > < p > The HLS playlist file to create. Usually ends with ‘ .m3u8’ , and is
2018-02-10 23:37:42 +00:00
relative to hls_master_playlist_output (see below). If unspecified,
defaults to something of the form ‘ stream_0.m3u8’ , ‘ stream_1.m3u8’ ,
2020-01-22 00:59:16 +00:00
‘ stream_2.m3u8’ , etc.< / p >
< / dd >
< dt class = "field-even" > iframe_playlist_name< / dt >
< dd class = "field-even" > < p > The optional HLS I-Frames only playlist file to create. Usually ends with
2018-02-10 23:37:42 +00:00
‘ .m3u8’ , and is relative to hls_master_playlist_output (see below). Should
only be set for video streams. If unspecified, no I-Frames only playlist is
2020-01-22 00:59:16 +00:00
created.< / p >
< / dd >
< dt class = "field-odd" > hls_characteristics (charcs)< / dt >
< dd class = "field-odd" > < p > Optional colon or semi-colon separated list of values for the
2018-12-20 22:38:40 +00:00
CHARACTERISTICS attribute for EXT-X-MEDIA. See CHARACTERISTICS attribute in
2020-01-22 00:59:16 +00:00
< a class = "reference external" href = "http://bit.ly/2OOUkdB" > http://bit.ly/2OOUkdB< / a > for details.< / p >
< / dd >
< / dl >
2021-06-22 00:16:40 +00:00
< / section >
< section id = "hls-options" >
2017-09-20 02:35:05 +00:00
< h3 > HLS options< a class = "headerlink" href = "#hls-options" title = "Permalink to this headline" > ¶< / a > < / h3 >
2020-01-22 00:59:16 +00:00
< dl class = "option-list" >
< dt > < kbd > < span class = "option" > --hls_master_playlist_output < var > < file_path> < / var > < / span > < / kbd > < / dt >
< dd > < p > Output path for the master playlist for HLS. This flag must be used to
output HLS.< / p >
< / dd >
< dt > < kbd > < span class = "option" > --hls_base_url < var > < url> < / var > < / span > < / kbd > < / dt >
< dd > < p > The base URL for the Media Playlists and media files listed in the
playlists. This is the prefix for the files.< / p >
< / dd >
< dt > < kbd > < span class = "option" > --hls_key_uri < var > < uri> < / var > < / span > < / kbd > < / dt >
< dd > < p > The key uri for ‘ identity’ and ‘ com.apple.streamingkeydelivery’ (FairPlay)
2018-08-16 00:35:22 +00:00
key formats. Ignored if the playlist is not encrypted or not using the above
2020-01-22 00:59:16 +00:00
key formats.< / p >
< / dd >
< dt > < kbd > < span class = "option" > --hls_playlist_type < var > < type> < / var > < / span > < / kbd > < / dt >
< dd > < p > VOD, EVENT, or LIVE. This defines the EXT-X-PLAYLIST-TYPE in the HLS
2017-09-20 02:35:05 +00:00
specification. For hls_playlist_type of LIVE, EXT-X-PLAYLIST-TYPE tag is
2020-01-22 00:59:16 +00:00
omitted.< / p >
< / dd >
< dt > < kbd > < span class = "option" > --time_shift_buffer_depth < var > < seconds> < / var > < / span > < / kbd > < / dt >
< dd > < p > Guaranteed duration of the time shifting buffer for LIVE playlists, in
seconds.< / p >
< / dd >
< dt > < kbd > < span class = "option" > --preserved_segments_outside_live_window < var > < num_segments> < / var > < / span > < / kbd > < / dt >
< dd > < p > Segments outside the live window (defined by < cite > time_shift_buffer_depth< / cite >
2018-05-23 23:12:00 +00:00
above) are automatically removed except for the most recent X segments
defined by this parameter. This is needed to accommodate latencies in
various stages of content serving pipeline, so that the segments stay
accessible as they may still be accessed by the player.< / p >
2020-01-22 00:59:16 +00:00
< p > The segments are not removed if the value is zero.< / p >
< / dd >
< dt > < kbd > < span class = "option" > --default_language < var > < language> < / var > < / span > < / kbd > < / dt >
< dd > < p > The first audio/text rendition in a group tagged with this language will
2018-02-10 23:37:42 +00:00
have ‘ DEFAULT’ attribute set to ‘ YES’ . This allows the player to choose the
2018-12-20 22:38:40 +00:00
correct default language for the content.< / p >
2020-01-22 00:59:16 +00:00
< p > This applies to both audio and text tracks. The default language for text
2018-12-20 22:38:40 +00:00
tracks can be overriden by ‘ default_text_language’ .< / p >
2020-01-22 00:59:16 +00:00
< / dd >
< dt > < kbd > < span class = "option" > --default_text_language < var > < text_language> < / var > < / span > < / kbd > < / dt >
< dd > < p > Same as above, but this applies to text tracks only, and overrides the
default language for text tracks.< / p >
< / dd >
2021-04-10 04:00:37 +00:00
< dt > < kbd > < span class = "option" > --hls_media_sequence_number < var > < unsigned_number> < / var > < / span > < / kbd > < / dt >
< dd > < p > HLS uses the EXT-X-MEDIA-SEQUENCE tag at the start of a live playlist in
order to specify the first segment sequence number. This is because any
live playlist have a limited number of segments, and they also keep
updating with new segments while removing old ones. When a player refreshes
the playlist, this information is important for keeping track of segments
positions.< / p >
< p > When the packager starts, it naturally starts this count from zero. However,
there are many situations where the packager may be restarted, without this
meaning starting this value from zero (but continuing a previous sequence).
The most common situations are problems in the encoder feeding the packager.< / p >
< p > With those cases in mind, this parameter allows to set the initial
EXT-X-MEDIA-SEQUENCE value. This way, it’ s possible to continue the sequence
number from previous packager run.< / p >
< p > For more information about the reasoning of this, please see issue
< a class = "reference external" href = "https://github.com/google/shaka-packager/issues/691" > #691< / a > .< / p >
< p > The EXT-X-MEDIA-SEQUENCE documentation can be read here:
< a class = "reference external" href = "https://tools.ietf.org/html/rfc8216#section-4.3.3.2" > https://tools.ietf.org/html/rfc8216#section-4.3.3.2< / a > .< / p >
< / dd >
2020-01-22 00:59:16 +00:00
< / dl >
2021-04-10 04:00:37 +00:00
< p > – hls_only=0|1< / p >
< blockquote >
< div > < p > Optional. Defaults to 0 if not specified. If it is set to 1, indicates the
stream is HLS only.< / p >
< / div > < / blockquote >
2021-06-22 00:16:40 +00:00
< / section >
< section id = "segment-template-formatting" >
2017-09-20 02:35:05 +00:00
< h3 > Segment template formatting< a class = "headerlink" href = "#segment-template-formatting" title = "Permalink to this headline" > ¶< / a > < / h3 >
< p > The implementation is based on < em > Template-based Segment URL construction< / em >
described in ISO/IEC 23009-1:2014.< / p >
2021-04-10 04:00:37 +00:00
< table class = "styled-table docutils align-default" id = "id2" >
< caption > < span class = "caption-text" > Supported identifiers< / span > < a class = "headerlink" href = "#id2" title = "Permalink to this table" > ¶< / a > < / caption >
2017-09-20 02:35:05 +00:00
< colgroup >
2020-01-22 00:59:16 +00:00
< col style = "width: 19%" / >
< col style = "width: 41%" / >
< col style = "width: 41%" / >
2017-09-20 02:35:05 +00:00
< / colgroup >
2020-01-22 00:59:16 +00:00
< thead >
< tr class = "row-odd" > < th class = "left-align head" > < p > $< Identifier> $< / p > < / th >
< th class = "left-align head" > < p > Substitution parameter< / p > < / th >
< th class = "left-align head" > < p > Format< / p > < / th >
2017-09-20 02:35:05 +00:00
< / tr >
< / thead >
2020-01-22 00:59:16 +00:00
< tbody >
< tr class = "row-even" > < td class = "left-align" > < p > $$< / p > < / td >
< td class = "left-align" > < p > is an escape sequence, i.e.
2018-02-10 23:37:42 +00:00
“$$” is replaced with a single
2020-01-22 00:59:16 +00:00
“$”.< / p > < / td >
< td class = "left-align" > < p > Not applicable.< / p > < / td >
2017-09-20 02:35:05 +00:00
< / tr >
2020-01-22 00:59:16 +00:00
< tr class = "row-odd" > < td class = "left-align" > < p > $Number$< / p > < / td >
< td class = "left-align" > < p > This identifier is substitued
2017-09-20 02:35:05 +00:00
with the < em > number< / em > of the
2020-01-22 00:59:16 +00:00
corresponding Segment.< / p > < / td >
< td class = "left-align" > < p > The format tag may be present.< / p >
< p > If no format tag is present, a
2017-09-20 02:35:05 +00:00
default format tag with
< em > width< / em > =1 shall be used.< / p >
< / td >
< / tr >
2020-01-22 00:59:16 +00:00
< tr class = "row-even" > < td class = "left-align" > < p > $Time$< / p > < / td >
< td class = "left-align" > < p > This identifier is substituted
2017-09-20 02:35:05 +00:00
with the value of the
< strong > SegmentTimeline@ t< / strong >
attribute for the Segment
being accessed. Either
$Number$ or $Time$ may be used
2020-01-22 00:59:16 +00:00
but not both at the same time.< / p > < / td >
< td class = "left-align" > < p > The format tag may be present.< / p >
< p > If no format tag is present, a
2017-09-20 02:35:05 +00:00
default format tag with
< em > width< / em > =1 shall be used.< / p >
< / td >
< / tr >
< / tbody >
< / table >
< div class = "admonition note" >
2020-01-22 00:59:16 +00:00
< p class = "admonition-title" > Note< / p >
< p > Identifiers $RepresentationID$ and $Bandwidth$ are not supported in this
2017-09-20 02:35:05 +00:00
version. Please file an < a class = "reference external" href = "https://github.com/google/shaka-packager/issues" > issue< / a > if you want it to be
supported.< / p >
< / div >
< p > In each URL, the identifiers shall be replaced by the substitution parameter
per the definition in the above table. Identifier matching is case-sensitive.< / p >
2018-02-10 23:37:42 +00:00
< p > Each identifier may be suffixed, within the enclosing ‘ $’ characters, with an
2017-09-20 02:35:05 +00:00
additional format tag aligned with the < em > printf< / em > format tag as defined in IEEE
1003.1-2008 following this prototype:< / p >
2020-01-22 00:59:16 +00:00
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "o" > %< / span > < span class = "mi" > 0< / span > < span class = "p" > [< / span > < span class = "n" > width< / span > < span class = "p" > ]< / span > < span class = "n" > d< / span >
2017-09-20 02:35:05 +00:00
< / pre > < / div >
< / div >
< p > The < em > width< / em > parameter is an unsigned integer that provides the minimum number
of characters to be printed. If the value to be printed is shorter than this
number, the result shall be padded with zeros. The value is not truncated even
if the result is larger.< / p >
< p > Strings outside identifiers shall only contain characters that are permitted
within URLs according to RFC 3986.< / p >
2021-06-22 00:16:40 +00:00
< / section >
< / section >
< / section >
2017-09-20 02:35:05 +00:00
2021-04-10 04:00:37 +00:00
< div class = "clearer" > < / div >
2017-09-20 02:35:05 +00:00
< / div >
< / div >
< / div >
2021-04-10 04:00:37 +00:00
< div class = "sphinxsidebar" role = "navigation" aria-label = "main navigation" >
< div class = "sphinxsidebarwrapper" >
< h3 > < a href = "../index.html" > Table of Contents< / a > < / h3 >
< ul >
< li > < a class = "reference internal" href = "#" > HLS< / a > < ul >
< li > < a class = "reference internal" href = "#synopsis" > Synopsis< / a > < / li >
< li > < a class = "reference internal" href = "#examples" > Examples< / a > < / li >
< li > < a class = "reference internal" href = "#configuration-options" > Configuration options< / a > < ul >
< li > < a class = "reference internal" href = "#hls-specific-stream-descriptor-fields" > HLS specific stream descriptor fields< / a > < / li >
< li > < a class = "reference internal" href = "#hls-options" > HLS options< / a > < / li >
< li > < a class = "reference internal" href = "#segment-template-formatting" > Segment template formatting< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< / ul >
< h4 > Previous topic< / h4 >
< p class = "topless" > < a href = "dash.html"
title="previous chapter">DASH< / a > < / p >
< h4 > Next topic< / h4 >
< p class = "topless" > < a href = "live.html"
title="next chapter">Live< / a > < / p >
< div role = "note" aria-label = "source link" >
< h3 > This Page< / h3 >
< ul class = "this-page-menu" >
< li > < a href = "../_sources/tutorials/hls.rst.txt"
rel="nofollow">Show Source< / a > < / li >
< / ul >
< / div >
< div id = "searchbox" style = "display: none" role = "search" >
< h3 id = "searchlabel" > Quick search< / h3 >
< div class = "searchformwrapper" >
< form class = "search" action = "../search.html" method = "get" >
< input type = "text" name = "q" aria-labelledby = "searchlabel" / >
< input type = "submit" value = "Go" / >
< / form >
< / div >
< / div >
< script > $ ( '#searchbox' ) . show ( 0 ) ; < / script >
< / div >
< / div >
2017-09-20 02:35:05 +00:00
< div class = "clearer" > < / div >
< / div >
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../genindex.html" title = "General Index"
>index< / a > < / li >
< li class = "right" >
< a href = "live.html" title = "Live"
>next< / a > |< / li >
< li class = "right" >
< a href = "dash.html" title = "DASH"
>previous< / a > |< / li >
< li class = "nav-item nav-item-0" > < a href = "../index.html" > Shaka Packager documentation< / a > » < / li >
2021-04-10 04:00:37 +00:00
< li class = "nav-item nav-item-1" > < a href = "tutorials.html" > Tutorials< / a > » < / li >
< li class = "nav-item nav-item-this" > < a href = "" > HLS< / a > < / li >
2017-09-20 02:35:05 +00:00
< / ul >
< / div >
< div class = "footer" role = "contentinfo" >
© Copyright 2017, Google.
2021-06-22 00:16:40 +00:00
Created using < a href = "https://www.sphinx-doc.org/" > Sphinx< / a > 4.0.2.
2017-09-20 02:35:05 +00:00
< / div >
< / body >
< / html >