X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fmuxers.texi;h=38d93919e7685cf3a2f07cdf0de73611e874a271;hb=1a115a31d430b71973b1e1556fcf767417449f09;hp=0866142d4399366f96cd29d4f9159cef8c90e885;hpb=e584e88c56740b6cb248a3d946886bd4e8e46e01;p=ffmpeg diff --git a/doc/muxers.texi b/doc/muxers.texi index 0866142d439..38d93919e76 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -194,6 +194,68 @@ Used to facilitate seeking; particularly for HTTP pseudo streaming. @end table @end table +@anchor{dash} +@section dash + +Dynamic Adaptive Streaming over HTTP (DASH) muxer that creates segments +and manifest files according to the MPEG-DASH standard ISO/IEC 23009-1:2014. + +For more information see: + +@itemize @bullet +@item +ISO DASH Specification: @url{http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip} +@item +WebM DASH Specification: @url{https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification} +@end itemize + +It creates a MPD manifest file and segment files for each stream. + +The segment filename might contain pre-defined identifiers used with SegmentTemplate +as defined in section 5.3.9.4.4 of the standard. Available identifiers are "$RepresentationID$", +"$Number$", "$Bandwidth$" and "$Time$". + +@example +ffmpeg -re -i -map 0 -map 0 -c:a libfdk_aac -c:v libx264 +-b:v:0 800k -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline +-profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0 +-b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1 +-window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" +-f dash /path/to/out.mpd +@end example + +@table @option +@item -min_seg_duration @var{microseconds} +Set the segment length in microseconds. +@item -window_size @var{size} +Set the maximum number of segments kept in the manifest. +@item -extra_window_size @var{size} +Set the maximum number of segments kept outside of the manifest before removing from disk. +@item -remove_at_exit @var{remove} +Enable (1) or disable (0) removal of all segments when finished. +@item -use_template @var{template} +Enable (1) or disable (0) use of SegmentTemplate instead of SegmentList. +@item -use_timeline @var{timeline} +Enable (1) or disable (0) use of SegmentTimeline in SegmentTemplate. +@item -single_file @var{single_file} +Enable (1) or disable (0) storing all segments in one file, accessed using byte ranges. +@item -single_file_name @var{file_name} +DASH-templated name to be used for baseURL. Implies @var{single_file} set to "1". +@item -init_seg_name @var{init_name} +DASH-templated name to used for the initialization segment. Default is "init-stream$RepresentationID$.m4s" +@item -media_seg_name @var{segment_name} +DASH-templated name to used for the media segments. Default is "chunk-stream$RepresentationID$-$Number%05d$.m4s" +@item -utc_timing_url @var{utc_url} +URL of the page that will return the UTC timestamp in ISO format. Example: "https://time.akamai.com/?iso" +@item -adaptation_sets @var{adaptation_sets} +Assign streams to AdaptationSets. Syntax is "id=x,streams=a,b,c id=y,streams=d,e" with x and y being the IDs +of the adaptation sets and a,b,c,d and e are the indices of the mapped streams. + +To map all video (or audio) streams to an AdaptationSet, "v" (or "a") can be used as stream identifier instead of IDs. + +When no assignment is defined, this defaults to an AdaptationSet for each stream. +@end table + @anchor{framecrc} @section framecrc @@ -551,7 +613,7 @@ format. The optional third line specifies the initialization vector (IV) as a hexadecimal string to be used instead of the segment sequence number (default) for encryption. Changes to @var{key_info_file} will result in segment encryption with the new key/IV and an entry in the playlist for the new key -URI/IV. +URI/IV if @code{hls_flags periodic_rekey} is enabled. Key info file format: @example @@ -614,6 +676,23 @@ in the playlist. Hex-coded 16byte initialization vector for every segment instead of the autogenerated ones. +@item hls_segment_type @var{flags} +Possible values: + +@table @samp +@item mpegts +If this flag is set, the hls segment files will format to mpegts. +the mpegts files is used in all hls versions. + +@item fmp4 +If this flag is set, the hls segment files will format to fragment mp4 looks like dash. +the fmp4 files is used in hls after version 7. + +@end table + +@item hls_fmp4_init_filename @var{filename} +set filename to the fragment files header file, default filename is @file{init.mp4}. + @item hls_flags @var{flags} Possible values: @@ -648,6 +727,11 @@ first segment's information. @item omit_endlist Do not append the @code{EXT-X-ENDLIST} tag at the end of the playlist. +@item periodic_rekey +The file specified by @code{hls_key_info_file} will be checked periodically and +detect updates to the encryption info. Be sure to replace this file atomically, +including the file containing the AES encryption key. + @item split_by_time Allow segments to start on frames other than keyframes. This improves behavior on some players when the time between keyframes is inconsistent, @@ -706,6 +790,10 @@ server using the HTTP PUT method, and update the m3u8 files every @code{refresh} times using the same method. Note that the HTTP server must support the given method for uploading files. + +@item http_user_agent +Override User-Agent field in HTTP header. Applicable only for HTTP output. + @end table @anchor{ico} @@ -1540,7 +1628,7 @@ inconsistent, but may make things worse on others, and can cause some oddities during seeking. Defaults to @code{0}. @item reset_timestamps @var{1|0} -Reset timestamps at the begin of each segment, so that each segment +Reset timestamps at the beginning of each segment, so that each segment will start with near-zero timestamps. It is meant to ease the playback of the generated segments. May not work with some combinations of muxers/codecs. It is set to @code{0} by default.