* commit 'c5c663541739cb813a2a5668ee8339b535b35d7d':
doc: add dash muxer
Merged-by: Rodger Combs <rodger.combs@gmail.com>
... | ... |
@@ -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 |
|