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