From: Rodger Combs Date: Tue, 26 Sep 2017 17:13:54 +0000 (-0300) Subject: Merge commit 'c5c663541739cb813a2a5668ee8339b535b35d7d' X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=3eb1d05ef719cbb0793f6bd82d7227f9093f6fc3;p=ffmpeg Merge commit 'c5c663541739cb813a2a5668ee8339b535b35d7d' * commit 'c5c663541739cb813a2a5668ee8339b535b35d7d': doc: add dash muxer Merged-by: Rodger Combs --- 3eb1d05ef719cbb0793f6bd82d7227f9093f6fc3 diff --cc doc/muxers.texi index 36769b8c1a0,62cd8d025b1..38d93919e76 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@@ -160,40 -48,73 +160,102 @@@ specifying the audio and video codec an compute the CRC of the input audio converted to PCM unsigned 8-bit and the input video converted to MPEG-2 video, use the command: @example -avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc - +ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc - @end example -See also the @ref{framecrc} muxer. +@section flv + +Adobe Flash Video Format muxer. + +This muxer accepts the following options: + +@table @option + +@item flvflags @var{flags} +Possible values: + +@table @samp + +@item aac_seq_header_detect +Place AAC sequence header based on audio stream data. + +@item no_sequence_end +Disable sequence end tag. + +@item no_metadata +Disable metadata tag. + +@item no_duration_filesize +Disable duration and filesize in metadata when they are equal to zero +at the end of stream. (Be used to non-seekable living stream). + +@item add_keyframe_index +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 -avconv -re -i -map 0 -map 0 -c:a libfdk_aac -c:v libx264 ++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