Browse code

Merge commit 'c5c663541739cb813a2a5668ee8339b535b35d7d'

* commit 'c5c663541739cb813a2a5668ee8339b535b35d7d':
doc: add dash muxer

Merged-by: Rodger Combs <rodger.combs@gmail.com>

Rodger Combs authored on 2017/09/27 02:13:54
Showing 1 changed files
... ...
@@ -194,6 +194,68 @@ Used to facilitate seeking; particularly for HTTP pseudo streaming.
194 194
 @end table
195 195
 @end table
196 196
 
197
+@anchor{dash}
198
+@section dash
199
+
200
+Dynamic Adaptive Streaming over HTTP (DASH) muxer that creates segments
201
+and manifest files according to the MPEG-DASH standard ISO/IEC 23009-1:2014.
202
+
203
+For more information see:
204
+
205
+@itemize @bullet
206
+@item
207
+ISO DASH Specification: @url{http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip}
208
+@item
209
+WebM DASH Specification: @url{https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification}
210
+@end itemize
211
+
212
+It creates a MPD manifest file and segment files for each stream.
213
+
214
+The segment filename might contain pre-defined identifiers used with SegmentTemplate
215
+as defined in section 5.3.9.4.4 of the standard. Available identifiers are "$RepresentationID$",
216
+"$Number$", "$Bandwidth$" and "$Time$".
217
+
218
+@example
219
+ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264
220
+-b:v:0 800k -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline
221
+-profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0
222
+-b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1
223
+-window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a"
224
+-f dash /path/to/out.mpd
225
+@end example
226
+
227
+@table @option
228
+@item -min_seg_duration @var{microseconds}
229
+Set the segment length in microseconds.
230
+@item -window_size @var{size}
231
+Set the maximum number of segments kept in the manifest.
232
+@item -extra_window_size @var{size}
233
+Set the maximum number of segments kept outside of the manifest before removing from disk.
234
+@item -remove_at_exit @var{remove}
235
+Enable (1) or disable (0) removal of all segments when finished.
236
+@item -use_template @var{template}
237
+Enable (1) or disable (0) use of SegmentTemplate instead of SegmentList.
238
+@item -use_timeline @var{timeline}
239
+Enable (1) or disable (0) use of SegmentTimeline in SegmentTemplate.
240
+@item -single_file @var{single_file}
241
+Enable (1) or disable (0) storing all segments in one file, accessed using byte ranges.
242
+@item -single_file_name @var{file_name}
243
+DASH-templated name to be used for baseURL. Implies @var{single_file} set to "1".
244
+@item -init_seg_name @var{init_name}
245
+DASH-templated name to used for the initialization segment. Default is "init-stream$RepresentationID$.m4s"
246
+@item -media_seg_name @var{segment_name}
247
+DASH-templated name to used for the media segments. Default is "chunk-stream$RepresentationID$-$Number%05d$.m4s"
248
+@item -utc_timing_url @var{utc_url}
249
+URL of the page that will return the UTC timestamp in ISO format. Example: "https://time.akamai.com/?iso"
250
+@item -adaptation_sets @var{adaptation_sets}
251
+Assign streams to AdaptationSets. Syntax is "id=x,streams=a,b,c id=y,streams=d,e" with x and y being the IDs
252
+of the adaptation sets and a,b,c,d and e are the indices of the mapped streams.
253
+
254
+To map all video (or audio) streams to an AdaptationSet, "v" (or "a") can be used as stream identifier instead of IDs.
255
+
256
+When no assignment is defined, this defaults to an AdaptationSet for each stream.
257
+@end table
258
+
197 259
 @anchor{framecrc}
198 260
 @section framecrc
199 261