1\input texinfo @c -*- texinfo -*-
2
3@settitle avconv Documentation
4@titlepage
5@center @titlefont{avconv Documentation}
6@end titlepage
7
8@top
9
10@contents
11
12@chapter Synopsis
13
14The generic syntax is:
15
16@example
17@c man begin SYNOPSIS
18avconv [global options] [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}...
19@c man end
20@end example
21
22@chapter Description
23@c man begin DESCRIPTION
24
25avconv is a very fast video and audio converter that can also grab from
26a live audio/video source. It can also convert between arbitrary sample
27rates and resize video on the fly with a high quality polyphase filter.
28
29avconv reads from an arbitrary number of input "files" (which can be regular
30files, pipes, network streams, grabbing devices, etc.), specified by the
31@code{-i} option, and writes to an arbitrary number of output "files", which are
32specified by a plain output filename. Anything found on the command line which
33cannot be interpreted as an option is considered to be an output filename.
34
35Each input or output file can in principle contain any number of streams of
36different types (video/audio/subtitle/attachment/data). Allowed number and/or
37types of streams can be limited by the container format. Selecting, which
38streams from which inputs go into output, is done either automatically or with
39the @code{-map} option (see the Stream selection chapter).
40
41To refer to input files in options, you must use their indices (0-based). E.g.
42the first input file is @code{0}, the second is @code{1} etc. Similarly, streams
43within a file are referred to by their indices. E.g. @code{2:3} refers to the
44fourth stream in the third input file. See also the Stream specifiers chapter.
45
46As a general rule, options are applied to the next specified
47file. Therefore, order is important, and you can have the same
48option on the command line multiple times. Each occurrence is
49then applied to the next input or output file.
50Exceptions from this rule are the global options (e.g. verbosity level),
51which should be specified first.
52
53Do not mix input and output files -- first specify all input files, then all
54output files. Also do not mix options which belong to different files. All
55options apply ONLY to the next input or output file and are reset between files.
56
57@itemize
58@item
59To set the video bitrate of the output file to 64kbit/s:
60@example
61avconv -i input.avi -b 64k output.avi
62@end example
63
64@item
65To force the frame rate of the output file to 24 fps:
66@example
67avconv -i input.avi -r 24 output.avi
68@end example
69
70@item
71To force the frame rate of the input file (valid for raw formats only)
72to 1 fps and the frame rate of the output file to 24 fps:
73@example
74avconv -r 1 -i input.m2v -r 24 output.avi
75@end example
76@end itemize
77
78The format option may be needed for raw input files.
79
80@c man end DESCRIPTION
81
82@chapter Stream selection
83@c man begin STREAM SELECTION
84
85By default avconv tries to pick the "best" stream of each type present in input
86files and add them to each output file. For video, this means the highest
87resolution, for audio the highest channel count. For subtitle it's simply the
88first subtitle stream.
89
90You can disable some of those defaults by using @code{-vn/-an/-sn} options. For
91full manual control, use the @code{-map} option, which disables the defaults just
92described.
93
94@c man end STREAM SELECTION
95
96@chapter Options
97@c man begin OPTIONS
98
99@include avtools-common-opts.texi
100
101@section Main options
102
103@table @option
104
105@item -f @var{fmt} (@emph{input/output})
106Force input or output file format. The format is normally autodetected for input
107files and guessed from file extension for output files, so this option is not
108needed in most cases.
109
110@item -i @var{filename} (@emph{input})
111input file name
112
113@item -y (@emph{global})
114Overwrite output files without asking.
115
116@item -c[:@var{stream_specifier}] @var{codec} (@emph{input/output,per-stream})
117@itemx -codec[:@var{stream_specifier}] @var{codec} (@emph{input/output,per-stream})
118Select an encoder (when used before an output file) or a decoder (when used
119before an input file) for one or more streams. @var{codec} is the name of a
120decoder/encoder or a special value @code{copy} (output only) to indicate that
121the stream is not to be reencoded.
122
123For example
124@example
125avconv -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
126@end example
127encodes all video streams with libx264 and copies all audio streams.
128
129For each stream, the last matching @code{c} option is applied, so
130@example
131avconv -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
132@end example
133will copy all the streams except the second video, which will be encoded with
134libx264, and the 138th audio, which will be encoded with libvorbis.
135
136@item -t @var{duration} (@emph{output})
137Stop writing the output after its duration reaches @var{duration}.
138@var{duration} may be a number in seconds, or in @code{hh:mm:ss[.xxx]} form.
139
140@item -fs @var{limit_size} (@emph{output})
141Set the file size limit.
142
143@item -ss @var{position} (@emph{input/output})
144When used as an input option (before @code{-i}), seeks in this input file to
145@var{position}. When used as an output option (before an output filename),
146decodes but discards input until the timestamps reach @var{position}. This is
147slower, but more accurate.
148
149@var{position} may be either in seconds or in @code{hh:mm:ss[.xxx]} form.
150
151@item -itsoffset @var{offset} (@emph{input})
152Set the input time offset in seconds.
153@code{[-]hh:mm:ss[.xxx]} syntax is also supported.
154The offset is added to the timestamps of the input files.
155Specifying a positive offset means that the corresponding
156streams are delayed by @var{offset} seconds.
157
158@item -metadata[:metadata_specifier] @var{key}=@var{value} (@emph{output,per-metadata})
159Set a metadata key/value pair.
160
161An optional @var{metadata_specifier} may be given to set metadata
162on streams or chapters. See @code{-map_metadata} documentation for
163details.
164
165This option overrides metadata set with @code{-map_metadata}. It is
166also possible to delete metadata by using an empty value.
167
168For example, for setting the title in the output file:
169@example
170avconv -i in.avi -metadata title="my title" out.flv
171@end example
172
173To set the language of the first audio stream:
174@example
175avconv -i INPUT -metadata:s:a:0 language=eng OUTPUT
176@end example
177
178@item -target @var{type} (@emph{output})
179Specify target file type (@code{vcd}, @code{svcd}, @code{dvd}, @code{dv},
180@code{dv50}). @var{type} may be prefixed with @code{pal-}, @code{ntsc-} or
181@code{film-} to use the corresponding standard. All the format options
182(bitrate, codecs, buffer sizes) are then set automatically. You can just type:
183
184@example
185avconv -i myfile.avi -target vcd /tmp/vcd.mpg
186@end example
187
188Nevertheless you can specify additional options as long as you know
189they do not conflict with the standard, as in:
190
191@example
192avconv -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
193@end example
194
195@item -dframes @var{number} (@emph{output})
196Set the number of data frames to record. This is an alias for @code{-frames:d}.
197
198@item -frames[:@var{stream_specifier}] @var{framecount} (@emph{output,per-stream})
199Stop writing to the stream after @var{framecount} frames.
200
201@item -q[:@var{stream_specifier}] @var{q} (@emph{output,per-stream})
202@itemx -qscale[:@var{stream_specifier}] @var{q} (@emph{output,per-stream})
203Use fixed quality scale (VBR). The meaning of @var{q} is
204codec-dependent.
205
206@item -filter[:@var{stream_specifier}] @var{filter_graph} (@emph{output,per-stream})
207@var{filter_graph} is a description of the filter graph to apply to
208the stream. Use @code{-filters} to show all the available filters
209(including also sources and sinks).
210@item -pre[:@var{stream_specifier}] @var{preset_name} (@emph{output,per-stream})
211Specify the preset for matching stream(s).
212
213@item -stats (@emph{global})
214Print encoding progress/statistics. On by default.
215
216@item -attach @var{filename} (@emph{output})
217Add an attachment to the output file. This is supported by a few formats
218like Matroska for e.g. fonts used in rendering subtitles. Attachments
219are implemented as a specific type of stream, so this option will add
220a new stream to the file. It is then possible to use per-stream options
221on this stream in the usual way. Attachment streams created with this
222option will be created after all the other streams (i.e. those created
223with @code{-map} or automatic mappings).
224
225Note that for Matroska you also have to set the mimetype metadata tag:
226@example
227avconv -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
228@end example
229(assuming that the attachment stream will be third in the output file).
230
231@item -dump_attachment[:@var{stream_specifier}] @var{filename} (@emph{input,per-stream})
232Extract the matching attachment stream into a file named @var{filename}. If
233@var{filename} is empty, then the value of the @code{filename} metadata tag
234will be used.
235
236E.g. to extract the first attachment to a file named 'out.ttf':
237@example
238avconv -dump_attachment:t:0 out.ttf INPUT
239@end example
240To extract all attachments to files determined by the @code{filename} tag:
241@example
242avconv -dump_attachment:t "" INPUT
243@end example
244
245Technical note -- attachments are implemented as codec extradata, so this
246option can actually be used to extract extradata from any stream, not just
247attachments.
248
249@end table
250
251@section Video Options
252
253@table @option
254@item -vframes @var{number} (@emph{output})
255Set the number of video frames to record. This is an alias for @code{-frames:v}.
256@item -r[:@var{stream_specifier}] @var{fps} (@emph{input/output,per-stream})
257Set frame rate (Hz value, fraction or abbreviation), (default = 25).
258@item -s[:@var{stream_specifier}] @var{size} (@emph{input/output,per-stream})
259Set frame size. The format is @samp{wxh} (default - same as source).
260The following abbreviations are recognized:
261@table @samp
262@item sqcif
263128x96
264@item qcif
265176x144
266@item cif
267352x288
268@item 4cif
269704x576
270@item 16cif
2711408x1152
272@item qqvga
273160x120
274@item qvga
275320x240
276@item vga
277640x480
278@item svga
279800x600
280@item xga
2811024x768
282@item uxga
2831600x1200
284@item qxga
2852048x1536
286@item sxga
2871280x1024
288@item qsxga
2892560x2048
290@item hsxga
2915120x4096
292@item wvga
293852x480
294@item wxga
2951366x768
296@item wsxga
2971600x1024
298@item wuxga
2991920x1200
300@item woxga
3012560x1600
302@item wqsxga
3033200x2048
304@item wquxga
3053840x2400
306@item whsxga
3076400x4096
308@item whuxga
3097680x4800
310@item cga
311320x200
312@item ega
313640x350
314@item hd480
315852x480
316@item hd720
3171280x720
318@item hd1080
3191920x1080
320@end table
321
322@item -aspect[:@var{stream_specifier}] @var{aspect} (@emph{output,per-stream})
323Set the video display aspect ratio specified by @var{aspect}.
324
325@var{aspect} can be a floating point number string, or a string of the
326form @var{num}:@var{den}, where @var{num} and @var{den} are the
327numerator and denominator of the aspect ratio. For example "4:3",
328"16:9", "1.3333", and "1.7777" are valid argument values.
329
330@item -vn (@emph{output})
331Disable video recording.
332@item -bt @var{tolerance}
333Set video bitrate tolerance (in bits, default 4000k).
334Has a minimum value of: (target_bitrate/target_framerate).
335In 1-pass mode, bitrate tolerance specifies how far ratecontrol is
336willing to deviate from the target average bitrate value. This is
337not related to min/max bitrate. Lowering tolerance too much has
338an adverse effect on quality.
339@item -maxrate @var{bitrate}
340Set max video bitrate (in bit/s).
341Requires -bufsize to be set.
342@item -minrate @var{bitrate}
343Set min video bitrate (in bit/s).
344Most useful in setting up a CBR encode:
345@example
346avconv -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
347@end example
348It is of little use elsewise.
349@item -bufsize @var{size}
350Set video buffer verifier buffer size (in bits).
351@item -vcodec @var{codec} (@emph{output})
352Set the video codec. This is an alias for @code{-codec:v}.
353@item -same_quant
354Use same quantizer as source (implies VBR).
355
356Note that this is NOT SAME QUALITY. Do not use this option unless you know you
357need it.
358
359@item -pass @var{n}
360Select the pass number (1 or 2). It is used to do two-pass
361video encoding. The statistics of the video are recorded in the first
362pass into a log file (see also the option -passlogfile),
363and in the second pass that log file is used to generate the video
364at the exact requested bitrate.
365On pass 1, you may just deactivate audio and set output to null,
366examples for Windows and Unix:
367@example
368avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
369avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
370@end example
371
372@item -passlogfile @var{prefix} (@emph{global})
373Set two-pass log file name prefix to @var{prefix}, the default file name
374prefix is ``av2pass''. The complete file name will be
375@file{PREFIX-N.log}, where N is a number specific to the output
376stream.
377
378@item -vf @var{filter_graph} (@emph{output})
379@var{filter_graph} is a description of the filter graph to apply to
380the input video.
381Use the option "-filters" to show all the available filters (including
382also sources and sinks).  This is an alias for @code{-filter:v}.
383
384@end table
385
386@section Advanced Video Options
387
388@table @option
389@item -pix_fmt[:@var{stream_specifier}] @var{format} (@emph{input/output,per-stream})
390Set pixel format. Use @code{-pix_fmts} to show all the supported
391pixel formats.
392@item -sws_flags @var{flags} (@emph{input/output})
393Set SwScaler flags.
394@item -g @var{gop_size}
395Set the group of pictures size.
396@item -vdt @var{n}
397Discard threshold.
398@item -qmin @var{q}
399minimum video quantizer scale (VBR)
400@item -qmax @var{q}
401maximum video quantizer scale (VBR)
402@item -qdiff @var{q}
403maximum difference between the quantizer scales (VBR)
404@item -qblur @var{blur}
405video quantizer scale blur (VBR) (range 0.0 - 1.0)
406@item -qcomp @var{compression}
407video quantizer scale compression (VBR) (default 0.5).
408Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0
409
410@item -lmin @var{lambda}
411minimum video lagrange factor (VBR)
412@item -lmax @var{lambda}
413max video lagrange factor (VBR)
414@item -mblmin @var{lambda}
415minimum macroblock quantizer scale (VBR)
416@item -mblmax @var{lambda}
417maximum macroblock quantizer scale (VBR)
418
419These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
420but you may use the QP2LAMBDA constant to easily convert from 'q' units:
421@example
422avconv -i src.ext -lmax 21*QP2LAMBDA dst.ext
423@end example
424
425@item -rc_init_cplx @var{complexity}
426initial complexity for single pass encoding
427@item -b_qfactor @var{factor}
428qp factor between P- and B-frames
429@item -i_qfactor @var{factor}
430qp factor between P- and I-frames
431@item -b_qoffset @var{offset}
432qp offset between P- and B-frames
433@item -i_qoffset @var{offset}
434qp offset between P- and I-frames
435@item -rc_eq @var{equation}
436Set rate control equation (see section "Expression Evaluation")
437(default = @code{tex^qComp}).
438
439When computing the rate control equation expression, besides the
440standard functions defined in the section "Expression Evaluation", the
441following functions are available:
442@table @var
443@item bits2qp(bits)
444@item qp2bits(qp)
445@end table
446
447and the following constants are available:
448@table @var
449@item iTex
450@item pTex
451@item tex
452@item mv
453@item fCode
454@item iCount
455@item mcVar
456@item var
457@item isI
458@item isP
459@item isB
460@item avgQP
461@item qComp
462@item avgIITex
463@item avgPITex
464@item avgPPTex
465@item avgBPTex
466@item avgTex
467@end table
468
469@item -rc_override[:@var{stream_specifier}] @var{override} (@emph{output,per-stream})
470rate control override for specific intervals
471@item -me_method @var{method}
472Set motion estimation method to @var{method}.
473Available methods are (from lowest to best quality):
474@table @samp
475@item zero
476Try just the (0, 0) vector.
477@item phods
478@item log
479@item x1
480@item hex
481@item umh
482@item epzs
483(default method)
484@item full
485exhaustive search (slow and marginally better than epzs)
486@end table
487
488@item -er @var{n}
489Set error resilience to @var{n}.
490@table @samp
491@item 1
492FF_ER_CAREFUL (default)
493@item 2
494FF_ER_COMPLIANT
495@item 3
496FF_ER_AGGRESSIVE
497@item 4
498FF_ER_VERY_AGGRESSIVE
499@end table
500
501@item -ec @var{bit_mask}
502Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
503the following values:
504@table @samp
505@item 1
506FF_EC_GUESS_MVS (default = enabled)
507@item 2
508FF_EC_DEBLOCK (default = enabled)
509@end table
510
511@item -bf @var{frames}
512Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
513@item -mbd @var{mode}
514macroblock decision
515@table @samp
516@item 0
517FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in avconv).
518@item 1
519FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
520@item 2
521FF_MB_DECISION_RD: rate distortion
522@end table
523
524@item -bug @var{param}
525Work around encoder bugs that are not auto-detected.
526@item -strict @var{strictness}
527How strictly to follow the standards.
528
529@item -deinterlace
530Deinterlace pictures.
531@item -vstats
532Dump video coding statistics to @file{vstats_HHMMSS.log}.
533@item -vstats_file @var{file}
534Dump video coding statistics to @var{file}.
535@item -top[:@var{stream_specifier}] @var{n} (@emph{output,per-stream})
536top=1/bottom=0/auto=-1 field first
537@item -dc @var{precision}
538Intra_dc_precision.
539@item -vtag @var{fourcc/tag} (@emph{output})
540Force video tag/fourcc. This is an alias for @code{-tag:v}.
541@item -qphist (@emph{global})
542Show QP histogram.
543@item -force_key_frames[:@var{stream_specifier}] @var{time}[,@var{time}...] (@emph{output,per-stream})
544Force key frames at the specified timestamps, more precisely at the first
545frames after each specified time.
546This option can be useful to ensure that a seek point is present at a
547chapter mark or any other designated place in the output file.
548The timestamps must be specified in ascending order.
549
550@item -copyinkf[:@var{stream_specifier}] (@emph{output,per-stream})
551When doing stream copy, copy also non-key frames found at the
552beginning.
553@end table
554
555@section Audio Options
556
557@table @option
558@item -aframes @var{number} (@emph{output})
559Set the number of audio frames to record. This is an alias for @code{-frames:a}.
560@item -ar[:@var{stream_specifier}] @var{freq} (@emph{input/output,per-stream})
561Set the audio sampling frequency. For output streams it is set by
562default to the frequency of the corresponding input stream. For input
563streams this option only makes sense for audio grabbing devices and raw
564demuxers and is mapped to the corresponding demuxer options.
565@item -aq @var{q} (@emph{output})
566Set the audio quality (codec-specific, VBR). This is an alias for -q:a.
567@item -ac[:@var{stream_specifier}] @var{channels} (@emph{input/output,per-stream})
568Set the number of audio channels. For output streams it is set by
569default to the number of input audio channels. For input streams
570this option only makes sense for audio grabbing devices and raw demuxers
571and is mapped to the corresponding demuxer options.
572@item -an (@emph{output})
573Disable audio recording.
574@item -acodec @var{codec} (@emph{input/output})
575Set the audio codec. This is an alias for @code{-codec:a}.
576@item -sample_fmt[:@var{stream_specifier}] @var{sample_fmt} (@emph{output,per-stream})
577Set the audio sample format. Use @code{-sample_fmts} to get a list
578of supported sample formats.
579@end table
580
581@section Advanced Audio options:
582
583@table @option
584@item -atag @var{fourcc/tag} (@emph{output})
585Force audio tag/fourcc. This is an alias for @code{-tag:a}.
586@item -audio_service_type @var{type}
587Set the type of service that the audio stream contains.
588@table @option
589@item ma
590Main Audio Service (default)
591@item ef
592Effects
593@item vi
594Visually Impaired
595@item hi
596Hearing Impaired
597@item di
598Dialogue
599@item co
600Commentary
601@item em
602Emergency
603@item vo
604Voice Over
605@item ka
606Karaoke
607@end table
608@end table
609
610@section Subtitle options:
611
612@table @option
613@item -scodec @var{codec} (@emph{input/output})
614Set the subtitle codec. This is an alias for @code{-codec:s}.
615@item -sn (@emph{output})
616Disable subtitle recording.
617@end table
618
619@section Audio/Video grab options
620
621@table @option
622@item -isync (@emph{global})
623Synchronize read on input.
624@end table
625
626@section Advanced options
627
628@table @option
629@item -map [-]@var{input_file_id}[:@var{stream_specifier}][,@var{sync_file_id}[:@var{stream_specifier}]] (@emph{output})
630
631Designate one or more input streams as a source for the output file. Each input
632stream is identified by the input file index @var{input_file_id} and
633the input stream index @var{input_stream_id} within the input
634file. Both indices start at 0. If specified,
635@var{sync_file_id}:@var{stream_specifier} sets which input stream
636is used as a presentation sync reference.
637
638The first @code{-map} option on the command line specifies the
639source for output stream 0, the second @code{-map} option specifies
640the source for output stream 1, etc.
641
642A @code{-} character before the stream identifier creates a "negative" mapping.
643It disables matching streams from already created mappings.
644
645For example, to map ALL streams from the first input file to output
646@example
647avconv -i INPUT -map 0 output
648@end example
649
650For example, if you have two audio streams in the first input file,
651these streams are identified by "0:0" and "0:1". You can use
652@code{-map} to select which streams to place in an output file. For
653example:
654@example
655avconv -i INPUT -map 0:1 out.wav
656@end example
657will map the input stream in @file{INPUT} identified by "0:1" to
658the (single) output stream in @file{out.wav}.
659
660For example, to select the stream with index 2 from input file
661@file{a.mov} (specified by the identifier "0:2"), and stream with
662index 6 from input @file{b.mov} (specified by the identifier "1:6"),
663and copy them to the output file @file{out.mov}:
664@example
665avconv -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
666@end example
667
668To select all video and the third audio stream from an input file:
669@example
670avconv -i INPUT -map 0:v -map 0:a:2 OUTPUT
671@end example
672
673To map all the streams except the second audio, use negative mappings
674@example
675avconv -i INPUT -map 0 -map -0:a:1 OUTPUT
676@end example
677
678Note that using this option disables the default mappings for this output file.
679
680@item -map_metadata[:@var{metadata_spec_out}] @var{infile}[:@var{metadata_spec_in}] (@emph{output,per-metadata})
681Set metadata information of the next output file from @var{infile}. Note that
682those are file indices (zero-based), not filenames.
683Optional @var{metadata_spec_in/out} parameters specify, which metadata to copy.
684A metadata specifier can have the following forms:
685@table @option
686@item @var{g}
687global metadata, i.e. metadata that applies to the whole file
688
689@item @var{s}[:@var{stream_spec}]
690per-stream metadata. @var{stream_spec} is a stream specifier as described
691in the @ref{Stream specifiers} chapter. In an input metadata specifier, the first
692matching stream is copied from. In an output metadata specifier, all matching
693streams are copied to.
694
695@item @var{c}:@var{chapter_index}
696per-chapter metadata. @var{chapter_index} is the zero-based chapter index.
697
698@item @var{p}:@var{program_index}
699per-program metadata. @var{program_index} is the zero-based program index.
700@end table
701If metadata specifier is omitted, it defaults to global.
702
703By default, global metadata is copied from the first input file,
704per-stream and per-chapter metadata is copied along with streams/chapters. These
705default mappings are disabled by creating any mapping of the relevant type. A negative
706file index can be used to create a dummy mapping that just disables automatic copying.
707
708For example to copy metadata from the first stream of the input file to global metadata
709of the output file:
710@example
711avconv -i in.ogg -map_metadata 0:s:0 out.mp3
712@end example
713
714To do the reverse, i.e. copy global metadata to all audio streams:
715@example
716avconv -i in.mkv -map_metadata:s:a 0:g out.mkv
717@end example
718Note that simple @code{0} would work as well in this example, since global
719metadata is assumed by default.
720
721@item -map_chapters @var{input_file_index} (@emph{output})
722Copy chapters from input file with index @var{input_file_index} to the next
723output file. If no chapter mapping is specified, then chapters are copied from
724the first input file with at least one chapter. Use a negative file index to
725disable any chapter copying.
726@item -debug
727Print specific debug info.
728@item -benchmark (@emph{global})
729Show benchmarking information at the end of an encode.
730Shows CPU time used and maximum memory consumption.
731Maximum memory consumption is not supported on all systems,
732it will usually display as 0 if not supported.
733@item -timelimit @var{duration} (@emph{global})
734Exit after avconv has been running for @var{duration} seconds.
735@item -dump (@emph{global})
736Dump each input packet to stderr.
737@item -hex (@emph{global})
738When dumping packets, also dump the payload.
739@item -ps @var{size}
740Set RTP payload size in bytes.
741@item -re (@emph{input})
742Read input at native frame rate. Mainly used to simulate a grab device.
743@item -threads @var{count}
744Thread count.
745@item -vsync @var{parameter}
746Video sync method.
747
748@table @option
749@item passthrough
750Each frame is passed with its timestamp from the demuxer to the muxer.
751@item cfr
752Frames will be duplicated and dropped to achieve exactly the requested
753constant framerate.
754@item vfr
755Frames are passed through with their timestamp or dropped so as to
756prevent 2 frames from having the same timestamp.
757@item auto
758Chooses between 1 and 2 depending on muxer capabilities. This is the
759default method.
760@end table
761
762With -map you can select from which stream the timestamps should be
763taken. You can leave either video or audio unchanged and sync the
764remaining stream(s) to the unchanged one.
765
766@item -async @var{samples_per_second}
767Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
768the parameter is the maximum samples per second by which the audio is changed.
769-async 1 is a special case where only the start of the audio stream is corrected
770without any later correction.
771@item -copyts
772Copy timestamps from input to output.
773@item -copytb
774Copy input stream time base from input to output when stream copying.
775@item -shortest
776Finish encoding when the shortest input stream ends.
777@item -dts_delta_threshold
778Timestamp discontinuity delta threshold.
779@item -muxdelay @var{seconds} (@emph{input})
780Set the maximum demux-decode delay.
781@item -muxpreload @var{seconds} (@emph{input})
782Set the initial demux-decode delay.
783@item -streamid @var{output-stream-index}:@var{new-value} (@emph{output})
784Assign a new stream-id value to an output stream. This option should be
785specified prior to the output filename to which it applies.
786For the situation where multiple output files exist, a streamid
787may be reassigned to a different value.
788
789For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for
790an output mpegts file:
791@example
792avconv -i infile -streamid 0:33 -streamid 1:36 out.ts
793@end example
794
795@item -bsf[:@var{stream_specifier}] @var{bitstream_filters} (@emph{output,per-stream})
796Set bitstream filters for matching streams. @var{bistream_filters} is
797a comma-separated list of bitstream filters. Use the @code{-bsfs} option
798to get the list of bitstream filters.
799@example
800avconv -i h264.mp4 -c:v copy -vbsf h264_mp4toannexb -an out.h264
801@end example
802@example
803avconv -i file.mov -an -vn -sbsf mov2textsub -c:s copy -f rawvideo sub.txt
804@end example
805
806@item -tag[:@var{stream_specifier}] @var{codec_tag} (@emph{output,per-stream})
807Force a tag/fourcc for matching streams.
808@end table
809@c man end OPTIONS
810
811@chapter Tips
812@c man begin TIPS
813
814@itemize
815@item
816For streaming at very low bitrate application, use a low frame rate
817and a small GOP size. This is especially true for RealVideo where
818the Linux player does not seem to be very fast, so it can miss
819frames. An example is:
820
821@example
822avconv -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
823@end example
824
825@item
826The parameter 'q' which is displayed while encoding is the current
827quantizer. The value 1 indicates that a very good quality could
828be achieved. The value 31 indicates the worst quality. If q=31 appears
829too often, it means that the encoder cannot compress enough to meet
830your bitrate. You must either increase the bitrate, decrease the
831frame rate or decrease the frame size.
832
833@item
834If your computer is not fast enough, you can speed up the
835compression at the expense of the compression ratio. You can use
836'-me zero' to speed up motion estimation, and '-intra' to disable
837motion estimation completely (you have only I-frames, which means it
838is about as good as JPEG compression).
839
840@item
841To have very low audio bitrates, reduce the sampling frequency
842(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
843
844@item
845To have a constant quality (but a variable bitrate), use the option
846'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
847quality).
848
849@end itemize
850@c man end TIPS
851
852@chapter Examples
853@c man begin EXAMPLES
854
855@section Preset files
856
857A preset file contains a sequence of @var{option=value} pairs, one for
858each line, specifying a sequence of options which can be specified also on
859the command line. Lines starting with the hash ('#') character are ignored and
860are used to provide comments. Empty lines are also ignored. Check the
861@file{presets} directory in the Libav source tree for examples.
862
863Preset files are specified with the @code{pre} option, this option takes a
864preset name as input.  Avconv searches for a file named @var{preset_name}.avpreset in
865the directories @file{$AVCONV_DATADIR} (if set), and @file{$HOME/.avconv}, and in
866the data directory defined at configuration time (usually @file{$PREFIX/share/avconv})
867in that order.  For example, if the argument is @code{libx264-max}, it will
868search for the file @file{libx264-max.avpreset}.
869
870@section Video and Audio grabbing
871
872If you specify the input format and device then avconv can grab video
873and audio directly.
874
875@example
876avconv -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
877@end example
878
879Note that you must activate the right video source and channel before
880launching avconv with any TV viewer such as
881@uref{http://linux.bytesex.org/xawtv/, xawtv} by Gerd Knorr. You also
882have to set the audio recording levels correctly with a
883standard mixer.
884
885@section X11 grabbing
886
887Grab the X11 display with avconv via
888
889@example
890avconv -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg
891@end example
892
8930.0 is display.screen number of your X11 server, same as
894the DISPLAY environment variable.
895
896@example
897avconv -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
898@end example
899
9000.0 is display.screen number of your X11 server, same as the DISPLAY environment
901variable. 10 is the x-offset and 20 the y-offset for the grabbing.
902
903@section Video and Audio file format conversion
904
905Any supported file format and protocol can serve as input to avconv:
906
907Examples:
908@itemize
909@item
910You can use YUV files as input:
911
912@example
913avconv -i /tmp/test%d.Y /tmp/out.mpg
914@end example
915
916It will use the files:
917@example
918/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
919/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
920@end example
921
922The Y files use twice the resolution of the U and V files. They are
923raw files, without header. They can be generated by all decent video
924decoders. You must specify the size of the image with the @option{-s} option
925if avconv cannot guess it.
926
927@item
928You can input from a raw YUV420P file:
929
930@example
931avconv -i /tmp/test.yuv /tmp/out.avi
932@end example
933
934test.yuv is a file containing raw YUV planar data. Each frame is composed
935of the Y plane followed by the U and V planes at half vertical and
936horizontal resolution.
937
938@item
939You can output to a raw YUV420P file:
940
941@example
942avconv -i mydivx.avi hugefile.yuv
943@end example
944
945@item
946You can set several input files and output files:
947
948@example
949avconv -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
950@end example
951
952Converts the audio file a.wav and the raw YUV video file a.yuv
953to MPEG file a.mpg.
954
955@item
956You can also do audio and video conversions at the same time:
957
958@example
959avconv -i /tmp/a.wav -ar 22050 /tmp/a.mp2
960@end example
961
962Converts a.wav to MPEG audio at 22050 Hz sample rate.
963
964@item
965You can encode to several formats at the same time and define a
966mapping from input stream to output streams:
967
968@example
969avconv -i /tmp/a.wav -map 0:a -b 64k /tmp/a.mp2 -map 0:a -b 128k /tmp/b.mp2
970@end example
971
972Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map
973file:index' specifies which input stream is used for each output
974stream, in the order of the definition of output streams.
975
976@item
977You can transcode decrypted VOBs:
978
979@example
980avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
981@end example
982
983This is a typical DVD ripping example; the input is a VOB file, the
984output an AVI file with MPEG-4 video and MP3 audio. Note that in this
985command we use B-frames so the MPEG-4 stream is DivX5 compatible, and
986GOP size is 300 which means one intra frame every 10 seconds for 29.97fps
987input video. Furthermore, the audio stream is MP3-encoded so you need
988to enable LAME support by passing @code{--enable-libmp3lame} to configure.
989The mapping is particularly useful for DVD transcoding
990to get the desired audio language.
991
992NOTE: To see the supported input formats, use @code{avconv -formats}.
993
994@item
995You can extract images from a video, or create a video from many images:
996
997For extracting images from a video:
998@example
999avconv -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
1000@end example
1001
1002This will extract one video frame per second from the video and will
1003output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg},
1004etc. Images will be rescaled to fit the new WxH values.
1005
1006If you want to extract just a limited number of frames, you can use the
1007above command in combination with the -vframes or -t option, or in
1008combination with -ss to start extracting from a certain point in time.
1009
1010For creating a video from many images:
1011@example
1012avconv -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
1013@end example
1014
1015The syntax @code{foo-%03d.jpeg} specifies to use a decimal number
1016composed of three digits padded with zeroes to express the sequence
1017number. It is the same syntax supported by the C printf function, but
1018only formats accepting a normal integer are suitable.
1019
1020@item
1021You can put many streams of the same type in the output:
1022
1023@example
1024avconv -i test1.avi -i test2.avi -map 0.3 -map 0.2 -map 0.1 -map 0.0 -c copy test12.nut
1025@end example
1026
1027The resulting output file @file{test12.avi} will contain first four streams from
1028the input file in reverse order.
1029
1030@end itemize
1031@c man end EXAMPLES
1032
1033@include eval.texi
1034@include encoders.texi
1035@include demuxers.texi
1036@include muxers.texi
1037@include indevs.texi
1038@include outdevs.texi
1039@include protocols.texi
1040@include bitstream_filters.texi
1041@include filters.texi
1042@include metadata.texi
1043
1044@ignore
1045
1046@setfilename avconv
1047@settitle avconv video converter
1048
1049@c man begin SEEALSO
1050avplay(1), avprobe(1) and the Libav HTML documentation
1051@c man end
1052
1053@c man begin AUTHORS
1054The Libav developers
1055@c man end
1056
1057@end ignore
1058
1059@bye
1060