doc: Provide better examples for hls and segment muxing
[ffmpeg.git] / doc / muxers.texi
1 @chapter Muxers
2 @c man begin MUXERS
3
4 Muxers are configured elements in Libav which allow writing
5 multimedia streams to a particular type of file.
6
7 When you configure your Libav build, all the supported muxers
8 are enabled by default. You can list all available muxers using the
9 configure option @code{--list-muxers}.
10
11 You can disable all the muxers with the configure option
12 @code{--disable-muxers} and selectively enable / disable single muxers
13 with the options @code{--enable-muxer=@var{MUXER}} /
14 @code{--disable-muxer=@var{MUXER}}.
15
16 The option @code{-formats} of the av* tools will display the list of
17 enabled muxers.
18
19 A description of some of the currently available muxers follows.
20
21 @anchor{crc}
22 @section crc
23
24 CRC (Cyclic Redundancy Check) testing format.
25
26 This muxer computes and prints the Adler-32 CRC of all the input audio
27 and video frames. By default audio frames are converted to signed
28 16-bit raw audio and video frames to raw video before computing the
29 CRC.
30
31 The output of the muxer consists of a single line of the form:
32 CRC=0x@var{CRC}, where @var{CRC} is a hexadecimal number 0-padded to
33 8 digits containing the CRC for all the decoded input frames.
34
35 For example to compute the CRC of the input, and store it in the file
36 @file{out.crc}:
37 @example
38 avconv -i INPUT -f crc out.crc
39 @end example
40
41 You can print the CRC to stdout with the command:
42 @example
43 avconv -i INPUT -f crc -
44 @end example
45
46 You can select the output format of each frame with @command{avconv} by
47 specifying the audio and video codec and format. For example to
48 compute the CRC of the input audio converted to PCM unsigned 8-bit
49 and the input video converted to MPEG-2 video, use the command:
50 @example
51 avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
52 @end example
53
54 See also the @ref{framecrc} muxer.
55
56 @anchor{dash}
57 @section dash
58
59 Dynamic Adaptive Streaming over HTTP (DASH) muxer that creates segments
60 and manifest files according to the MPEG-DASH standard ISO/IEC 23009-1:2014.
61
62 For more information see:
63
64 @itemize @bullet
65 @item
66 ISO DASH Specification: @url{http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip}
67 @item
68 WebM DASH Specification: @url{https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification}
69 @end itemize
70
71 It creates a MPD manifest file and segment files for each stream.
72
73 The segment filename might contain pre-defined identifiers used with SegmentTemplate
74 as defined in section 5.3.9.4.4 of the standard. Available identifiers are "$RepresentationID$",
75 "$Number$", "$Bandwidth$" and "$Time$".
76
77 @example
78 avconv -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264
79 -b:v:0 800k -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline
80 -profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0
81 -b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1
82 -window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a"
83 -f dash /path/to/out.mpd
84 @end example
85
86 @table @option
87 @item -min_seg_duration @var{microseconds}
88 Set the segment length in microseconds.
89 @item -window_size @var{size}
90 Set the maximum number of segments kept in the manifest.
91 @item -extra_window_size @var{size}
92 Set the maximum number of segments kept outside of the manifest before removing from disk.
93 @item -remove_at_exit @var{remove}
94 Enable (1) or disable (0) removal of all segments when finished.
95 @item -use_template @var{template}
96 Enable (1) or disable (0) use of SegmentTemplate instead of SegmentList.
97 @item -use_timeline @var{timeline}
98 Enable (1) or disable (0) use of SegmentTimeline in SegmentTemplate.
99 @item -single_file @var{single_file}
100 Enable (1) or disable (0) storing all segments in one file, accessed using byte ranges.
101 @item -single_file_name @var{file_name}
102 DASH-templated name to be used for baseURL. Implies @var{single_file} set to "1".
103 @item -init_seg_name @var{init_name}
104 DASH-templated name to used for the initialization segment. Default is "init-stream$RepresentationID$.m4s"
105 @item -media_seg_name @var{segment_name}
106 DASH-templated name to used for the media segments. Default is "chunk-stream$RepresentationID$-$Number%05d$.m4s"
107 @item -utc_timing_url @var{utc_url}
108 URL of the page that will return the UTC timestamp in ISO format. Example: "https://time.akamai.com/?iso"
109 @item -adaptation_sets @var{adaptation_sets}
110 Assign streams to AdaptationSets. Syntax is "id=x,streams=a,b,c id=y,streams=d,e" with x and y being the IDs
111 of the adaptation sets and a,b,c,d and e are the indices of the mapped streams.
112
113 To map all video (or audio) streams to an AdaptationSet, "v" (or "a") can be used as stream identifier instead of IDs.
114
115 When no assignment is defined, this defaults to an AdaptationSet for each stream.
116 @end table
117
118 @anchor{framecrc}
119 @section framecrc
120
121 Per-frame CRC (Cyclic Redundancy Check) testing format.
122
123 This muxer computes and prints the Adler-32 CRC for each decoded audio
124 and video frame. By default audio frames are converted to signed
125 16-bit raw audio and video frames to raw video before computing the
126 CRC.
127
128 The output of the muxer consists of a line for each audio and video
129 frame of the form: @var{stream_index}, @var{frame_dts},
130 @var{frame_size}, 0x@var{CRC}, where @var{CRC} is a hexadecimal
131 number 0-padded to 8 digits containing the CRC of the decoded frame.
132
133 For example to compute the CRC of each decoded frame in the input, and
134 store it in the file @file{out.crc}:
135 @example
136 avconv -i INPUT -f framecrc out.crc
137 @end example
138
139 You can print the CRC of each decoded frame to stdout with the command:
140 @example
141 avconv -i INPUT -f framecrc -
142 @end example
143
144 You can select the output format of each frame with @command{avconv} by
145 specifying the audio and video codec and format. For example, to
146 compute the CRC of each decoded input audio frame converted to PCM
147 unsigned 8-bit and of each decoded input video frame converted to
148 MPEG-2 video, use the command:
149 @example
150 avconv -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
151 @end example
152
153 See also the @ref{crc} muxer.
154
155 @anchor{hls}
156 @section hls
157
158 Apple HTTP Live Streaming muxer that segments MPEG-TS according to
159 the HTTP Live Streaming specification.
160
161 It creates a playlist file and numbered segment files. The output
162 filename specifies the playlist filename; the segment filenames
163 receive the same basename as the playlist, a sequential number and
164 a .ts extension.
165
166 Make sure to require a closed GOP when encoding and to set the GOP
167 size to fit your segment time constraint.
168
169 @example
170 avconv -i in.mkv -c:v h264 -flags +cgop -g 30 -hls_time 1 out.m3u8
171 @end example
172
173 @table @option
174 @item -hls_time @var{seconds}
175 Set the segment length in seconds.
176 @item -hls_list_size @var{size}
177 Set the maximum number of playlist entries.
178 @item -hls_wrap @var{wrap}
179 Set the number after which index wraps.
180 @item -start_number @var{number}
181 Start the sequence from @var{number}.
182 @item -hls_base_url @var{baseurl}
183 Append @var{baseurl} to every entry in the playlist.
184 Useful to generate playlists with absolute paths.
185 @item -hls_allow_cache @var{allowcache}
186 Explicitly set whether the client MAY (1) or MUST NOT (0) cache media segments
187 @item -hls_version @var{version}
188 Set the protocol version. Enables or disables version-specific features
189 such as the integer (version 2) or decimal EXTINF values (version 3).
190 @item -hls_enc @var{enc}
191 Enable (1) or disable (0) the AES128 encryption.
192 When enabled every segment generated is encrypted and the encryption key
193 is saved as @var{playlist name}.key.
194 @item -hls_enc_key @var{key}
195 Use the specified hex-coded 16byte key to encrypt the segments, by default it
196 is randomly generated.
197 @item -hls_enc_key_url @var{keyurl}
198 If set, @var{keyurl} is prepended instead of @var{baseurl} to the key filename
199 in the playlist.
200 @item -hls_enc_iv @var{iv}
201 Use a specified hex-coded 16byte initialization vector for every segment instead
202 of the autogenerated ones.
203 @end table
204
205 @anchor{image2}
206 @section image2
207
208 Image file muxer.
209
210 The image file muxer writes video frames to image files.
211
212 The output filenames are specified by a pattern, which can be used to
213 produce sequentially numbered series of files.
214 The pattern may contain the string "%d" or "%0@var{N}d", this string
215 specifies the position of the characters representing a numbering in
216 the filenames. If the form "%0@var{N}d" is used, the string
217 representing the number in each filename is 0-padded to @var{N}
218 digits. The literal character '%' can be specified in the pattern with
219 the string "%%".
220
221 If the pattern contains "%d" or "%0@var{N}d", the first filename of
222 the file list specified will contain the number 1, all the following
223 numbers will be sequential.
224
225 The pattern may contain a suffix which is used to automatically
226 determine the format of the image files to write.
227
228 For example the pattern "img-%03d.bmp" will specify a sequence of
229 filenames of the form @file{img-001.bmp}, @file{img-002.bmp}, ...,
230 @file{img-010.bmp}, etc.
231 The pattern "img%%-%d.jpg" will specify a sequence of filenames of the
232 form @file{img%-1.jpg}, @file{img%-2.jpg}, ..., @file{img%-10.jpg},
233 etc.
234
235 The following example shows how to use @command{avconv} for creating a
236 sequence of files @file{img-001.jpeg}, @file{img-002.jpeg}, ...,
237 taking one image every second from the input video:
238 @example
239 avconv -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
240 @end example
241
242 Note that with @command{avconv}, if the format is not specified with the
243 @code{-f} option and the output filename specifies an image file
244 format, the image2 muxer is automatically selected, so the previous
245 command can be written as:
246 @example
247 avconv -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
248 @end example
249
250 Note also that the pattern must not necessarily contain "%d" or
251 "%0@var{N}d", for example to create a single image file
252 @file{img.jpeg} from the input video you can employ the command:
253 @example
254 avconv -i in.avi -f image2 -frames:v 1 img.jpeg
255 @end example
256
257 @table @option
258 @item -start_number @var{number}
259 Start the sequence from @var{number}.
260
261 @item -update @var{number}
262 If @var{number} is nonzero, the filename will always be interpreted as just a
263 filename, not a pattern, and this file will be continuously overwritten with new
264 images.
265
266 @end table
267
268 @section matroska
269
270 Matroska container muxer.
271
272 This muxer implements the matroska and webm container specs.
273
274 The recognized metadata settings in this muxer are:
275
276 @table @option
277
278 @item title=@var{title name}
279 Name provided to a single track
280 @end table
281
282 @table @option
283
284 @item language=@var{language name}
285 Specifies the language of the track in the Matroska languages form
286 @end table
287
288 @table @option
289
290 @item STEREO_MODE=@var{mode}
291 Stereo 3D video layout of two views in a single video track
292 @table @option
293 @item mono
294 video is not stereo
295 @item left_right
296 Both views are arranged side by side, Left-eye view is on the left
297 @item bottom_top
298 Both views are arranged in top-bottom orientation, Left-eye view is at bottom
299 @item top_bottom
300 Both views are arranged in top-bottom orientation, Left-eye view is on top
301 @item checkerboard_rl
302 Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
303 @item checkerboard_lr
304 Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
305 @item row_interleaved_rl
306 Each view is constituted by a row based interleaving, Right-eye view is first row
307 @item row_interleaved_lr
308 Each view is constituted by a row based interleaving, Left-eye view is first row
309 @item col_interleaved_rl
310 Both views are arranged in a column based interleaving manner, Right-eye view is first column
311 @item col_interleaved_lr
312 Both views are arranged in a column based interleaving manner, Left-eye view is first column
313 @item anaglyph_cyan_red
314 All frames are in anaglyph format viewable through red-cyan filters
315 @item right_left
316 Both views are arranged side by side, Right-eye view is on the left
317 @item anaglyph_green_magenta
318 All frames are in anaglyph format viewable through green-magenta filters
319 @item block_lr
320 Both eyes laced in one Block, Left-eye view is first
321 @item block_rl
322 Both eyes laced in one Block, Right-eye view is first
323 @end table
324 @end table
325
326 For example a 3D WebM clip can be created using the following command line:
327 @example
328 avconv -i sample_left_right_clip.mpg -an -c:v libvpx -metadata STEREO_MODE=left_right -y stereo_clip.webm
329 @end example
330
331 This muxer supports the following options:
332
333 @table @option
334
335 @item reserve_index_space
336 By default, this muxer writes the index for seeking (called cues in Matroska
337 terms) at the end of the file, because it cannot know in advance how much space
338 to leave for the index at the beginning of the file. However for some use cases
339 -- e.g.  streaming where seeking is possible but slow -- it is useful to put the
340 index at the beginning of the file.
341
342 If this option is set to a non-zero value, the muxer will reserve a given amount
343 of space in the file header and then try to write the cues there when the muxing
344 finishes. If the available space does not suffice, muxing will fail. A safe size
345 for most use cases should be about 50kB per hour of video.
346
347 Note that cues are only written if the output is seekable and this option will
348 have no effect if it is not.
349
350 @end table
351
352 @section mov, mp4, ismv
353
354 The mov/mp4/ismv muxer supports fragmentation. Normally, a MOV/MP4
355 file has all the metadata about all packets stored in one location
356 (written at the end of the file, it can be moved to the start for
357 better playback using the @command{qt-faststart} tool). A fragmented
358 file consists of a number of fragments, where packets and metadata
359 about these packets are stored together. Writing a fragmented
360 file has the advantage that the file is decodable even if the
361 writing is interrupted (while a normal MOV/MP4 is undecodable if
362 it is not properly finished), and it requires less memory when writing
363 very long files (since writing normal MOV/MP4 files stores info about
364 every single packet in memory until the file is closed). The downside
365 is that it is less compatible with other applications.
366
367 Fragmentation is enabled by setting one of the AVOptions that define
368 how to cut the file into fragments:
369
370 @table @option
371 @item -movflags frag_keyframe
372 Start a new fragment at each video keyframe.
373 @item -frag_duration @var{duration}
374 Create fragments that are @var{duration} microseconds long.
375 @item -frag_size @var{size}
376 Create fragments that contain up to @var{size} bytes of payload data.
377 @item -movflags frag_custom
378 Allow the caller to manually choose when to cut fragments, by
379 calling @code{av_write_frame(ctx, NULL)} to write a fragment with
380 the packets written so far. (This is only useful with other
381 applications integrating libavformat, not from @command{avconv}.)
382 @item -min_frag_duration @var{duration}
383 Don't create fragments that are shorter than @var{duration} microseconds long.
384 @end table
385
386 If more than one condition is specified, fragments are cut when
387 one of the specified conditions is fulfilled. The exception to this is
388 @code{-min_frag_duration}, which has to be fulfilled for any of the other
389 conditions to apply.
390
391 Additionally, the way the output file is written can be adjusted
392 through a few other options:
393
394 @table @option
395 @item -movflags empty_moov
396 Write an initial moov atom directly at the start of the file, without
397 describing any samples in it. Generally, an mdat/moov pair is written
398 at the start of the file, as a normal MOV/MP4 file, containing only
399 a short portion of the file. With this option set, there is no initial
400 mdat atom, and the moov atom only describes the tracks but has
401 a zero duration.
402
403 This option is implicitly set when writing ismv (Smooth Streaming) files.
404 @item -movflags separate_moof
405 Write a separate moof (movie fragment) atom for each track. Normally,
406 packets for all tracks are written in a moof atom (which is slightly
407 more efficient), but with this option set, the muxer writes one moof/mdat
408 pair for each track, making it easier to separate tracks.
409
410 This option is implicitly set when writing ismv (Smooth Streaming) files.
411 @item -movflags faststart
412 Run a second pass moving the index (moov atom) to the beginning of the file.
413 This operation can take a while, and will not work in various situations such
414 as fragmented output, thus it is not enabled by default.
415 @item -movflags disable_chpl
416 Disable Nero chapter markers (chpl atom).  Normally, both Nero chapters
417 and a QuickTime chapter track are written to the file. With this option
418 set, only the QuickTime chapter track will be written. Nero chapters can
419 cause failures when the file is reprocessed with certain tagging programs.
420 @item -movflags omit_tfhd_offset
421 Do not write any absolute base_data_offset in tfhd atoms. This avoids
422 tying fragments to absolute byte positions in the file/streams.
423 @item -movflags default_base_moof
424 Similarly to the omit_tfhd_offset, this flag avoids writing the
425 absolute base_data_offset field in tfhd atoms, but does so by using
426 the new default-base-is-moof flag instead. This flag is new from
427 14496-12:2012. This may make the fragments easier to parse in certain
428 circumstances (avoiding basing track fragment location calculations
429 on the implicit end of the previous track fragment).
430 @end table
431
432 Smooth Streaming content can be pushed in real time to a publishing
433 point on IIS with this muxer. Example:
434 @example
435 avconv -re @var{<normal input/transcoding options>} -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
436 @end example
437
438 @section mp3
439
440 The MP3 muxer writes a raw MP3 stream with the following optional features:
441 @itemize @bullet
442 @item
443 An ID3v2 metadata header at the beginning (enabled by default). Versions 2.3 and
444 2.4 are supported, the @code{id3v2_version} private option controls which one is
445 used (3 or 4). Setting @code{id3v2_version} to 0 disables the ID3v2 header
446 completely.
447
448 The muxer supports writing attached pictures (APIC frames) to the ID3v2 header.
449 The pictures are supplied to the muxer in form of a video stream with a single
450 packet. There can be any number of those streams, each will correspond to a
451 single APIC frame.  The stream metadata tags @var{title} and @var{comment} map
452 to APIC @var{description} and @var{picture type} respectively. See
453 @url{http://id3.org/id3v2.4.0-frames} for allowed picture types.
454
455 Note that the APIC frames must be written at the beginning, so the muxer will
456 buffer the audio frames until it gets all the pictures. It is therefore advised
457 to provide the pictures as soon as possible to avoid excessive buffering.
458
459 @item
460 A Xing/LAME frame right after the ID3v2 header (if present). It is enabled by
461 default, but will be written only if the output is seekable. The
462 @code{write_xing} private option can be used to disable it.  The frame contains
463 various information that may be useful to the decoder, like the audio duration
464 or encoder delay.
465
466 @item
467 A legacy ID3v1 tag at the end of the file (disabled by default). It may be
468 enabled with the @code{write_id3v1} private option, but as its capabilities are
469 very limited, its usage is not recommended.
470 @end itemize
471
472 Examples:
473
474 Write an mp3 with an ID3v2.3 header and an ID3v1 footer:
475 @example
476 avconv -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
477 @end example
478
479 Attach a picture to an mp3:
480 @example
481 avconv -i input.mp3 -i cover.png -c copy -metadata:s:v title="Album cover"
482 -metadata:s:v comment="Cover (Front)" out.mp3
483 @end example
484
485 Write a "clean" MP3 without any extra features:
486 @example
487 avconv -i input.wav -write_xing 0 -id3v2_version 0 out.mp3
488 @end example
489
490 @section mpegts
491
492 MPEG transport stream muxer.
493
494 This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
495
496 The muxer options are:
497
498 @table @option
499 @item -mpegts_original_network_id @var{number}
500 Set the original_network_id (default 0x0001). This is unique identifier
501 of a network in DVB. Its main use is in the unique identification of a
502 service through the path Original_Network_ID, Transport_Stream_ID.
503 @item -mpegts_transport_stream_id @var{number}
504 Set the transport_stream_id (default 0x0001). This identifies a
505 transponder in DVB.
506 @item -mpegts_service_id @var{number}
507 Set the service_id (default 0x0001) also known as program in DVB.
508 @item -mpegts_pmt_start_pid @var{number}
509 Set the first PID for PMT (default 0x1000, max 0x1f00).
510 @item -mpegts_start_pid @var{number}
511 Set the first PID for data packets (default 0x0100, max 0x0f00).
512 @item -muxrate @var{number}
513 Set a constant muxrate (default VBR).
514 @item -pcr_period @var{numer}
515 Override the default PCR retransmission time (default 20ms), ignored
516 if variable muxrate is selected.
517 @end table
518
519 The recognized metadata settings in mpegts muxer are @code{service_provider}
520 and @code{service_name}. If they are not set the default for
521 @code{service_provider} is "Libav" and the default for
522 @code{service_name} is "Service01".
523
524 @example
525 avconv -i file.mpg -c copy \
526      -mpegts_original_network_id 0x1122 \
527      -mpegts_transport_stream_id 0x3344 \
528      -mpegts_service_id 0x5566 \
529      -mpegts_pmt_start_pid 0x1500 \
530      -mpegts_start_pid 0x150 \
531      -metadata service_provider="Some provider" \
532      -metadata service_name="Some Channel" \
533      -y out.ts
534 @end example
535
536 @section null
537
538 Null muxer.
539
540 This muxer does not generate any output file, it is mainly useful for
541 testing or benchmarking purposes.
542
543 For example to benchmark decoding with @command{avconv} you can use the
544 command:
545 @example
546 avconv -benchmark -i INPUT -f null out.null
547 @end example
548
549 Note that the above command does not read or write the @file{out.null}
550 file, but specifying the output file is required by the @command{avconv}
551 syntax.
552
553 Alternatively you can write the command as:
554 @example
555 avconv -benchmark -i INPUT -f null -
556 @end example
557
558 @section nut
559
560 @table @option
561 @item -syncpoints @var{flags}
562 Change the syncpoint usage in nut:
563 @table @option
564 @item @var{default} use the normal low-overhead seeking aids.
565 @item @var{none} do not use the syncpoints at all, reducing the overhead but making the stream non-seekable;
566 @item @var{timestamped} extend the syncpoint with a wallclock field.
567 @end table
568 The @var{none} and @var{timestamped} flags are experimental.
569 @end table
570
571 @example
572 avconv -i INPUT -f_strict experimental -syncpoints none - | processor
573 @end example
574
575 @section ogg
576
577 Ogg container muxer.
578
579 @table @option
580 @item -page_duration @var{duration}
581 Preferred page duration, in microseconds. The muxer will attempt to create
582 pages that are approximately @var{duration} microseconds long. This allows the
583 user to compromise between seek granularity and container overhead. The default
584 is 1 second. A value of 0 will fill all segments, making pages as large as
585 possible. A value of 1 will effectively use 1 packet-per-page in most
586 situations, giving a small seek granularity at the cost of additional container
587 overhead.
588 @item -serial_offset @var{value}
589 Serial value from which to set the streams serial number.
590 Setting it to different and sufficiently large values ensures that the produced
591 ogg files can be safely chained.
592
593 @end table
594
595 @section segment
596
597 Basic stream segmenter.
598
599 The segmenter muxer outputs streams to a number of separate files of nearly
600 fixed duration. Output filename pattern can be set in a fashion similar to
601 @ref{image2}.
602
603 Every segment starts with a video keyframe, if a video stream is present.
604 The segment muxer works best with a single constant frame rate video.
605
606 Optionally it can generate a flat list of the created segments, one segment
607 per line.
608
609 @table @option
610 @item segment_format @var{format}
611 Override the inner container format, by default it is guessed by the filename
612 extension.
613 @item segment_time @var{t}
614 Set segment duration to @var{t} seconds.
615 @item segment_list @var{name}
616 Generate also a listfile named @var{name}.
617 @item segment_list_type @var{type}
618 Select the listing format.
619 @table @option
620 @item @var{flat} use a simple flat list of entries.
621 @item @var{hls} use a m3u8-like structure.
622 @end table
623 @item segment_list_size @var{size}
624 Overwrite the listfile once it reaches @var{size} entries.
625 @item segment_list_entry_prefix @var{prefix}
626 Prepend @var{prefix} to each entry. Useful to generate absolute paths.
627 @item segment_wrap @var{limit}
628 Wrap around segment index once it reaches @var{limit}.
629 @end table
630
631 Make sure to require a closed GOP when encoding and to set the GOP
632 size to fit your segment time constraint.
633
634 @example
635 avconv -i in.mkv -c hevc -flags +cgop -g 60 -map 0 -f segment -list out.list out%03d.nut
636 @end example
637
638 @c man end MUXERS