1\input texinfo @c -*- texinfo -*- 2 3@settitle ffmpeg Documentation 4@titlepage 5@center @titlefont{ffmpeg 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 18ffmpeg [[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 25ffmpeg 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 29The command line interface is designed to be intuitive, in the sense 30that ffmpeg tries to figure out all parameters that can possibly be 31derived automatically. You usually only have to specify the target 32bitrate you want. 33 34As a general rule, options are applied to the next specified 35file. Therefore, order is important, and you can have the same 36option on the command line multiple times. Each occurrence is 37then applied to the next input or output file. 38 39@itemize 40@item 41To set the video bitrate of the output file to 64kbit/s: 42@example 43ffmpeg -i input.avi -b 64k output.avi 44@end example 45 46@item 47To force the frame rate of the output file to 24 fps: 48@example 49ffmpeg -i input.avi -r 24 output.avi 50@end example 51 52@item 53To force the frame rate of the input file (valid for raw formats only) 54to 1 fps and the frame rate of the output file to 24 fps: 55@example 56ffmpeg -r 1 -i input.m2v -r 24 output.avi 57@end example 58@end itemize 59 60The format option may be needed for raw input files. 61 62By default ffmpeg tries to convert as losslessly as possible: It 63uses the same audio and video parameters for the outputs as the one 64specified for the inputs. 65 66@c man end DESCRIPTION 67 68@chapter Options 69@c man begin OPTIONS 70 71@include avtools-common-opts.texi 72 73@section Main options 74 75@table @option 76 77@item -f @var{fmt} 78Force format. 79 80@item -i @var{filename} 81input file name 82 83@item -y 84Overwrite output files. 85 86@item -t @var{duration} 87Restrict the transcoded/captured video sequence 88to the duration specified in seconds. 89@code{hh:mm:ss[.xxx]} syntax is also supported. 90 91@item -fs @var{limit_size} 92Set the file size limit. 93 94@item -ss @var{position} 95Seek to given time position in seconds. 96@code{hh:mm:ss[.xxx]} syntax is also supported. 97 98@item -itsoffset @var{offset} 99Set the input time offset in seconds. 100@code{[-]hh:mm:ss[.xxx]} syntax is also supported. 101This option affects all the input files that follow it. 102The offset is added to the timestamps of the input files. 103Specifying a positive offset means that the corresponding 104streams are delayed by 'offset' seconds. 105 106@item -timestamp @var{time} 107Set the recording timestamp in the container. 108The syntax for @var{time} is: 109@example 110now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z]) 111@end example 112If the value is "now" it takes the current time. 113Time is local time unless 'Z' or 'z' is appended, in which case it is 114interpreted as UTC. 115If the year-month-day part is not specified it takes the current 116year-month-day. 117 118@item -metadata @var{key}=@var{value} 119Set a metadata key/value pair. 120 121For example, for setting the title in the output file: 122@example 123ffmpeg -i in.avi -metadata title="my title" out.flv 124@end example 125 126@item -v @var{number} 127Set the logging verbosity level. 128 129@item -target @var{type} 130Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", 131"ntsc-svcd", ... ). All the format options (bitrate, codecs, 132buffer sizes) are then set automatically. You can just type: 133 134@example 135ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg 136@end example 137 138Nevertheless you can specify additional options as long as you know 139they do not conflict with the standard, as in: 140 141@example 142ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg 143@end example 144 145@item -dframes @var{number} 146Set the number of data frames to record. 147 148@item -scodec @var{codec} 149Force subtitle codec ('copy' to copy stream). 150 151@item -newsubtitle 152Add a new subtitle stream to the current output stream. 153 154@item -slang @var{code} 155Set the ISO 639 language code (3 letters) of the current subtitle stream. 156 157@end table 158 159@section Video Options 160 161@table @option 162@item -vframes @var{number} 163Set the number of video frames to record. 164@item -r @var{fps} 165Set frame rate (Hz value, fraction or abbreviation), (default = 25). 166@item -s @var{size} 167Set frame size. The format is @samp{wxh} (avserver default = 160x128, ffmpeg default = same as source). 168The following abbreviations are recognized: 169@table @samp 170@item sqcif 171128x96 172@item qcif 173176x144 174@item cif 175352x288 176@item 4cif 177704x576 178@item 16cif 1791408x1152 180@item qqvga 181160x120 182@item qvga 183320x240 184@item vga 185640x480 186@item svga 187800x600 188@item xga 1891024x768 190@item uxga 1911600x1200 192@item qxga 1932048x1536 194@item sxga 1951280x1024 196@item qsxga 1972560x2048 198@item hsxga 1995120x4096 200@item wvga 201852x480 202@item wxga 2031366x768 204@item wsxga 2051600x1024 206@item wuxga 2071920x1200 208@item woxga 2092560x1600 210@item wqsxga 2113200x2048 212@item wquxga 2133840x2400 214@item whsxga 2156400x4096 216@item whuxga 2177680x4800 218@item cga 219320x200 220@item ega 221640x350 222@item hd480 223852x480 224@item hd720 2251280x720 226@item hd1080 2271920x1080 228@end table 229 230@item -aspect @var{aspect} 231Set the video display aspect ratio specified by @var{aspect}. 232 233@var{aspect} can be a floating point number string, or a string of the 234form @var{num}:@var{den}, where @var{num} and @var{den} are the 235numerator and denominator of the aspect ratio. For example "4:3", 236"16:9", "1.3333", and "1.7777" are valid argument values. 237 238@item -croptop @var{size} 239@item -cropbottom @var{size} 240@item -cropleft @var{size} 241@item -cropright @var{size} 242All the crop options have been removed. Use -vf 243crop=width:height:x:y instead. 244 245@item -padtop @var{size} 246@item -padbottom @var{size} 247@item -padleft @var{size} 248@item -padright @var{size} 249@item -padcolor @var{hex_color} 250All the pad options have been removed. Use -vf 251pad=width:height:x:y:color instead. 252@item -vn 253Disable video recording. 254@item -bt @var{tolerance} 255Set video bitrate tolerance (in bits, default 4000k). 256Has a minimum value of: (target_bitrate/target_framerate). 257In 1-pass mode, bitrate tolerance specifies how far ratecontrol is 258willing to deviate from the target average bitrate value. This is 259not related to min/max bitrate. Lowering tolerance too much has 260an adverse effect on quality. 261@item -maxrate @var{bitrate} 262Set max video bitrate (in bit/s). 263Requires -bufsize to be set. 264@item -minrate @var{bitrate} 265Set min video bitrate (in bit/s). 266Most useful in setting up a CBR encode: 267@example 268ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v 269@end example 270It is of little use elsewise. 271@item -bufsize @var{size} 272Set video buffer verifier buffer size (in bits). 273@item -vcodec @var{codec} 274Force video codec to @var{codec}. Use the @code{copy} special value to 275tell that the raw codec data must be copied as is. 276@item -sameq 277Use same quantizer as source (implies VBR). 278 279@item -pass @var{n} 280Select the pass number (1 or 2). It is used to do two-pass 281video encoding. The statistics of the video are recorded in the first 282pass into a log file (see also the option -passlogfile), 283and in the second pass that log file is used to generate the video 284at the exact requested bitrate. 285On pass 1, you may just deactivate audio and set output to null, 286examples for Windows and Unix: 287@example 288ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL 289ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null 290@end example 291 292@item -passlogfile @var{prefix} 293Set two-pass log file name prefix to @var{prefix}, the default file name 294prefix is ``ffmpeg2pass''. The complete file name will be 295@file{PREFIX-N.log}, where N is a number specific to the output 296stream. 297 298@item -newvideo 299Add a new video stream to the current output stream. 300 301@item -vlang @var{code} 302Set the ISO 639 language code (3 letters) of the current video stream. 303 304@item -vf @var{filter_graph} 305@var{filter_graph} is a description of the filter graph to apply to 306the input video. 307Use the option "-filters" to show all the available filters (including 308also sources and sinks). 309 310@end table 311 312@section Advanced Video Options 313 314@table @option 315@item -pix_fmt @var{format} 316Set pixel format. Use 'list' as parameter to show all the supported 317pixel formats. 318@item -sws_flags @var{flags} 319Set SwScaler flags. 320@item -g @var{gop_size} 321Set the group of pictures size. 322@item -intra 323Use only intra frames. 324@item -vdt @var{n} 325Discard threshold. 326@item -qscale @var{q} 327Use fixed video quantizer scale (VBR). 328@item -qmin @var{q} 329minimum video quantizer scale (VBR) 330@item -qmax @var{q} 331maximum video quantizer scale (VBR) 332@item -qdiff @var{q} 333maximum difference between the quantizer scales (VBR) 334@item -qblur @var{blur} 335video quantizer scale blur (VBR) (range 0.0 - 1.0) 336@item -qcomp @var{compression} 337video quantizer scale compression (VBR) (default 0.5). 338Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0 339 340@item -lmin @var{lambda} 341minimum video lagrange factor (VBR) 342@item -lmax @var{lambda} 343max video lagrange factor (VBR) 344@item -mblmin @var{lambda} 345minimum macroblock quantizer scale (VBR) 346@item -mblmax @var{lambda} 347maximum macroblock quantizer scale (VBR) 348 349These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units, 350but you may use the QP2LAMBDA constant to easily convert from 'q' units: 351@example 352ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext 353@end example 354 355@item -rc_init_cplx @var{complexity} 356initial complexity for single pass encoding 357@item -b_qfactor @var{factor} 358qp factor between P- and B-frames 359@item -i_qfactor @var{factor} 360qp factor between P- and I-frames 361@item -b_qoffset @var{offset} 362qp offset between P- and B-frames 363@item -i_qoffset @var{offset} 364qp offset between P- and I-frames 365@item -rc_eq @var{equation} 366Set rate control equation (see section "Expression Evaluation") 367(default = @code{tex^qComp}). 368 369When computing the rate control equation expression, besides the 370standard functions defined in the section "Expression Evaluation", the 371following functions are available: 372@table @var 373@item bits2qp(bits) 374@item qp2bits(qp) 375@end table 376 377and the following constants are available: 378@table @var 379@item iTex 380@item pTex 381@item tex 382@item mv 383@item fCode 384@item iCount 385@item mcVar 386@item var 387@item isI 388@item isP 389@item isB 390@item avgQP 391@item qComp 392@item avgIITex 393@item avgPITex 394@item avgPPTex 395@item avgBPTex 396@item avgTex 397@end table 398 399@item -rc_override @var{override} 400rate control override for specific intervals 401@item -me_method @var{method} 402Set motion estimation method to @var{method}. 403Available methods are (from lowest to best quality): 404@table @samp 405@item zero 406Try just the (0, 0) vector. 407@item phods 408@item log 409@item x1 410@item hex 411@item umh 412@item epzs 413(default method) 414@item full 415exhaustive search (slow and marginally better than epzs) 416@end table 417 418@item -dct_algo @var{algo} 419Set DCT algorithm to @var{algo}. Available values are: 420@table @samp 421@item 0 422FF_DCT_AUTO (default) 423@item 1 424FF_DCT_FASTINT 425@item 2 426FF_DCT_INT 427@item 3 428FF_DCT_MMX 429@item 4 430FF_DCT_MLIB 431@item 5 432FF_DCT_ALTIVEC 433@end table 434 435@item -idct_algo @var{algo} 436Set IDCT algorithm to @var{algo}. Available values are: 437@table @samp 438@item 0 439FF_IDCT_AUTO (default) 440@item 1 441FF_IDCT_INT 442@item 2 443FF_IDCT_SIMPLE 444@item 3 445FF_IDCT_SIMPLEMMX 446@item 4 447FF_IDCT_LIBMPEG2MMX 448@item 5 449FF_IDCT_PS2 450@item 6 451FF_IDCT_MLIB 452@item 7 453FF_IDCT_ARM 454@item 8 455FF_IDCT_ALTIVEC 456@item 9 457FF_IDCT_SH4 458@item 10 459FF_IDCT_SIMPLEARM 460@end table 461 462@item -er @var{n} 463Set error resilience to @var{n}. 464@table @samp 465@item 1 466FF_ER_CAREFUL (default) 467@item 2 468FF_ER_COMPLIANT 469@item 3 470FF_ER_AGGRESSIVE 471@item 4 472FF_ER_EXPLODE 473@end table 474 475@item -ec @var{bit_mask} 476Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of 477the following values: 478@table @samp 479@item 1 480FF_EC_GUESS_MVS (default = enabled) 481@item 2 482FF_EC_DEBLOCK (default = enabled) 483@end table 484 485@item -bf @var{frames} 486Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4). 487@item -mbd @var{mode} 488macroblock decision 489@table @samp 490@item 0 491FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in ffmpeg). 492@item 1 493FF_MB_DECISION_BITS: Choose the one which needs the fewest bits. 494@item 2 495FF_MB_DECISION_RD: rate distortion 496@end table 497 498@item -4mv 499Use four motion vector by macroblock (MPEG-4 only). 500@item -part 501Use data partitioning (MPEG-4 only). 502@item -bug @var{param} 503Work around encoder bugs that are not auto-detected. 504@item -strict @var{strictness} 505How strictly to follow the standards. 506@item -aic 507Enable Advanced intra coding (h263+). 508@item -umv 509Enable Unlimited Motion Vector (h263+) 510 511@item -deinterlace 512Deinterlace pictures. 513@item -ilme 514Force interlacing support in encoder (MPEG-2 and MPEG-4 only). 515Use this option if your input file is interlaced and you want 516to keep the interlaced format for minimum losses. 517The alternative is to deinterlace the input stream with 518@option{-deinterlace}, but deinterlacing introduces losses. 519@item -psnr 520Calculate PSNR of compressed frames. 521@item -vstats 522Dump video coding statistics to @file{vstats_HHMMSS.log}. 523@item -vstats_file @var{file} 524Dump video coding statistics to @var{file}. 525@item -top @var{n} 526top=1/bottom=0/auto=-1 field first 527@item -dc @var{precision} 528Intra_dc_precision. 529@item -vtag @var{fourcc/tag} 530Force video tag/fourcc. 531@item -qphist 532Show QP histogram. 533@item -vbsf @var{bitstream_filter} 534Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump", "mjpeg2jpeg". 535@example 536ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264 537@end example 538@item -force_key_frames @var{time}[,@var{time}...] 539Force key frames at the specified timestamps, more precisely at the first 540frames after each specified time. 541This option can be useful to ensure that a seek point is present at a 542chapter mark or any other designated place in the output file. 543The timestamps must be specified in ascending order. 544@end table 545 546@section Audio Options 547 548@table @option 549@item -aframes @var{number} 550Set the number of audio frames to record. 551@item -ar @var{freq} 552Set the audio sampling frequency. For output streams it is set by 553default to the frequency of the corresponding input stream. For input 554streams this option only makes sense for audio grabbing devices and raw 555demuxers and is mapped to the corresponding demuxer options. 556@item -aq @var{q} 557Set the audio quality (codec-specific, VBR). 558@item -ac @var{channels} 559Set the number of audio channels. For output streams it is set by 560default to the number of input audio channels. For input streams 561this option only makes sense for audio grabbing devices and raw demuxers 562and is mapped to the corresponding demuxer options. 563@item -an 564Disable audio recording. 565@item -acodec @var{codec} 566Force audio codec to @var{codec}. Use the @code{copy} special value to 567specify that the raw codec data must be copied as is. 568@item -newaudio 569Add a new audio track to the output file. If you want to specify parameters, 570do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..). 571 572Mapping will be done automatically, if the number of output streams is equal to 573the number of input streams, else it will pick the first one that matches. You 574can override the mapping using @code{-map} as usual. 575 576Example: 577@example 578ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio 579@end example 580@item -alang @var{code} 581Set the ISO 639 language code (3 letters) of the current audio stream. 582@end table 583 584@section Advanced Audio options: 585 586@table @option 587@item -atag @var{fourcc/tag} 588Force audio tag/fourcc. 589@item -audio_service_type @var{type} 590Set the type of service that the audio stream contains. 591@table @option 592@item ma 593Main Audio Service (default) 594@item ef 595Effects 596@item vi 597Visually Impaired 598@item hi 599Hearing Impaired 600@item di 601Dialogue 602@item co 603Commentary 604@item em 605Emergency 606@item vo 607Voice Over 608@item ka 609Karaoke 610@end table 611@item -absf @var{bitstream_filter} 612Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp". 613@end table 614 615@section Subtitle options: 616 617@table @option 618@item -scodec @var{codec} 619Force subtitle codec ('copy' to copy stream). 620@item -newsubtitle 621Add a new subtitle stream to the current output stream. 622@item -slang @var{code} 623Set the ISO 639 language code (3 letters) of the current subtitle stream. 624@item -sn 625Disable subtitle recording. 626@item -sbsf @var{bitstream_filter} 627Bitstream filters available are "mov2textsub", "text2movsub". 628@example 629ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt 630@end example 631@end table 632 633@section Audio/Video grab options 634 635@table @option 636@item -vc @var{channel} 637Set video grab channel (DV1394 only). 638@item -tvstd @var{standard} 639Set television standard (NTSC, PAL (SECAM)). 640@item -isync 641Synchronize read on input. 642@end table 643 644@section Advanced options 645 646@table @option 647@item -map @var{input_file_id}.@var{input_stream_id}[:@var{sync_file_id}.@var{sync_stream_id}] 648 649Designate an input stream as a source for the output file. Each input 650stream is identified by the input file index @var{input_file_id} and 651the input stream index @var{input_stream_id} within the input 652file. Both indexes start at 0. If specified, 653@var{sync_file_id}.@var{sync_stream_id} sets which input stream 654is used as a presentation sync reference. 655 656The @code{-map} options must be specified just after the output file. 657If any @code{-map} options are used, the number of @code{-map} options 658on the command line must match the number of streams in the output 659file. The first @code{-map} option on the command line specifies the 660source for output stream 0, the second @code{-map} option specifies 661the source for output stream 1, etc. 662 663For example, if you have two audio streams in the first input file, 664these streams are identified by "0.0" and "0.1". You can use 665@code{-map} to select which stream to place in an output file. For 666example: 667@example 668ffmpeg -i INPUT out.wav -map 0.1 669@end example 670will map the input stream in @file{INPUT} identified by "0.1" to 671the (single) output stream in @file{out.wav}. 672 673For example, to select the stream with index 2 from input file 674@file{a.mov} (specified by the identifier "0.2"), and stream with 675index 6 from input @file{b.mov} (specified by the identifier "1.6"), 676and copy them to the output file @file{out.mov}: 677@example 678ffmpeg -i a.mov -i b.mov -vcodec copy -acodec copy out.mov -map 0.2 -map 1.6 679@end example 680 681To add more streams to the output file, you can use the 682@code{-newaudio}, @code{-newvideo}, @code{-newsubtitle} options. 683 684@item -map_meta_data @var{outfile}[,@var{metadata}]:@var{infile}[,@var{metadata}] 685Deprecated, use @var{-map_metadata} instead. 686 687@item -map_metadata @var{outfile}[,@var{metadata}]:@var{infile}[,@var{metadata}] 688Set metadata information of @var{outfile} from @var{infile}. Note that those 689are file indices (zero-based), not filenames. 690Optional @var{metadata} parameters specify, which metadata to copy - (g)lobal 691(i.e. metadata that applies to the whole file), per-(s)tream, per-(c)hapter or 692per-(p)rogram. All metadata specifiers other than global must be followed by the 693stream/chapter/program number. If metadata specifier is omitted, it defaults to 694global. 695 696By default, global metadata is copied from the first input file to all output files, 697per-stream and per-chapter metadata is copied along with streams/chapters. These 698default mappings are disabled by creating any mapping of the relevant type. A negative 699file index can be used to create a dummy mapping that just disables automatic copying. 700 701For example to copy metadata from the first stream of the input file to global metadata 702of the output file: 703@example 704ffmpeg -i in.ogg -map_metadata 0:0,s0 out.mp3 705@end example 706@item -map_chapters @var{outfile}:@var{infile} 707Copy chapters from @var{infile} to @var{outfile}. If no chapter mapping is specified, 708then chapters are copied from the first input file with at least one chapter to all 709output files. Use a negative file index to disable any chapter copying. 710@item -debug 711Print specific debug info. 712@item -benchmark 713Show benchmarking information at the end of an encode. 714Shows CPU time used and maximum memory consumption. 715Maximum memory consumption is not supported on all systems, 716it will usually display as 0 if not supported. 717@item -dump 718Dump each input packet. 719@item -hex 720When dumping packets, also dump the payload. 721@item -bitexact 722Only use bit exact algorithms (for codec testing). 723@item -ps @var{size} 724Set RTP payload size in bytes. 725@item -re 726Read input at native frame rate. Mainly used to simulate a grab device. 727@item -loop_input 728Loop over the input stream. Currently it works only for image 729streams. This option is used for automatic AVserver testing. 730This option is deprecated, use -loop. 731@item -loop_output @var{number_of_times} 732Repeatedly loop output for formats that support looping such as animated GIF 733(0 will loop the output infinitely). 734This option is deprecated, use -loop. 735@item -threads @var{count} 736Thread count. 737@item -vsync @var{parameter} 738Video sync method. 739 740@table @option 741@item 0 742Each frame is passed with its timestamp from the demuxer to the muxer. 743@item 1 744Frames will be duplicated and dropped to achieve exactly the requested 745constant framerate. 746@item 2 747Frames are passed through with their timestamp or dropped so as to 748prevent 2 frames from having the same timestamp. 749@item -1 750Chooses between 1 and 2 depending on muxer capabilities. This is the 751default method. 752@end table 753 754With -map you can select from which stream the timestamps should be 755taken. You can leave either video or audio unchanged and sync the 756remaining stream(s) to the unchanged one. 757 758@item -async @var{samples_per_second} 759Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps, 760the parameter is the maximum samples per second by which the audio is changed. 761-async 1 is a special case where only the start of the audio stream is corrected 762without any later correction. 763@item -copyts 764Copy timestamps from input to output. 765@item -copytb 766Copy input stream time base from input to output when stream copying. 767@item -shortest 768Finish encoding when the shortest input stream ends. 769@item -dts_delta_threshold 770Timestamp discontinuity delta threshold. 771@item -muxdelay @var{seconds} 772Set the maximum demux-decode delay. 773@item -muxpreload @var{seconds} 774Set the initial demux-decode delay. 775@item -streamid @var{output-stream-index}:@var{new-value} 776Assign a new stream-id value to an output stream. This option should be 777specified prior to the output filename to which it applies. 778For the situation where multiple output files exist, a streamid 779may be reassigned to a different value. 780 781For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for 782an output mpegts file: 783@example 784ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts 785@end example 786@end table 787 788@section Preset files 789 790A preset file contains a sequence of @var{option}=@var{value} pairs, 791one for each line, specifying a sequence of options which would be 792awkward to specify on the command line. Lines starting with the hash 793('#') character are ignored and are used to provide comments. Check 794the @file{presets} directory in the Libav source tree for examples. 795 796Preset files are specified with the @code{vpre}, @code{apre}, 797@code{spre}, and @code{fpre} options. The @code{fpre} option takes the 798filename of the preset instead of a preset name as input and can be 799used for any kind of codec. For the @code{vpre}, @code{apre}, and 800@code{spre} options, the options specified in a preset file are 801applied to the currently selected codec of the same type as the preset 802option. 803 804The argument passed to the @code{vpre}, @code{apre}, and @code{spre} 805preset options identifies the preset file to use according to the 806following rules: 807 808First ffmpeg searches for a file named @var{arg}.ffpreset in the 809directories @file{$AVCONV_DATADIR} (if set), and @file{$HOME/.avconv}, and in 810the datadir defined at configuration time (usually @file{PREFIX/share/avconv}) 811in that order. For example, if the argument is @code{libx264-max}, it will 812search for the file @file{libx264-max.ffpreset}. 813 814If no such file is found, then ffmpeg will search for a file named 815@var{codec_name}-@var{arg}.ffpreset in the above-mentioned 816directories, where @var{codec_name} is the name of the codec to which 817the preset file options will be applied. For example, if you select 818the video codec with @code{-vcodec libx264} and use @code{-vpre max}, 819then it will search for the file @file{libx264-max.ffpreset}. 820@c man end 821 822@chapter Tips 823@c man begin TIPS 824 825@itemize 826@item 827For streaming at very low bitrate application, use a low frame rate 828and a small GOP size. This is especially true for RealVideo where 829the Linux player does not seem to be very fast, so it can miss 830frames. An example is: 831 832@example 833ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm 834@end example 835 836@item 837The parameter 'q' which is displayed while encoding is the current 838quantizer. The value 1 indicates that a very good quality could 839be achieved. The value 31 indicates the worst quality. If q=31 appears 840too often, it means that the encoder cannot compress enough to meet 841your bitrate. You must either increase the bitrate, decrease the 842frame rate or decrease the frame size. 843 844@item 845If your computer is not fast enough, you can speed up the 846compression at the expense of the compression ratio. You can use 847'-me zero' to speed up motion estimation, and '-intra' to disable 848motion estimation completely (you have only I-frames, which means it 849is about as good as JPEG compression). 850 851@item 852To have very low audio bitrates, reduce the sampling frequency 853(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3). 854 855@item 856To have a constant quality (but a variable bitrate), use the option 857'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst 858quality). 859 860@item 861When converting video files, you can use the '-sameq' option which 862uses the same quality factor in the encoder as in the decoder. 863It allows almost lossless encoding. 864 865@end itemize 866@c man end TIPS 867 868@chapter Examples 869@c man begin EXAMPLES 870 871@section Video and Audio grabbing 872 873If you specify the input format and device then ffmpeg can grab video 874and audio directly. 875 876@example 877ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg 878@end example 879 880Note that you must activate the right video source and channel before 881launching ffmpeg with any TV viewer such as 882@uref{http://linux.bytesex.org/xawtv/, xawtv} by Gerd Knorr. You also 883have to set the audio recording levels correctly with a 884standard mixer. 885 886@section X11 grabbing 887 888Grab the X11 display with ffmpeg via 889 890@example 891ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg 892@end example 893 8940.0 is display.screen number of your X11 server, same as 895the DISPLAY environment variable. 896 897@example 898ffmpeg -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg 899@end example 900 90110 is the x-offset and 20 the y-offset for the grabbing. 902 903@example 904ffmpeg -f x11grab -follow_mouse centered -s cif -r 25 -i :0.0 /tmp/out.mpg 905@end example 906 907The grabbing region follows the mouse pointer, which stays at the center of 908region. 909 910@example 911ffmpeg -f x11grab -follow_mouse 100 -s cif -r 25 -i :0.0 /tmp/out.mpg 912@end example 913 914Only follows when mouse pointer reaches within 100 pixels to the edge of 915region. 916 917@example 918ffmpeg -f x11grab -show_region 1 -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg 919@end example 920 921The grabbing region will be indicated on screen. 922 923@example 924ffmpeg -f x11grab -follow_mouse centered -show_region 1 -s cif -r 25 -i :0.0 /tmp/out.mpg 925@end example 926 927The grabbing region indication will follow the mouse pointer. 928 929 930@section Video and Audio file format conversion 931 932Any supported file format and protocol can serve as input to ffmpeg: 933 934Examples: 935@itemize 936@item 937You can use YUV files as input: 938 939@example 940ffmpeg -i /tmp/test%d.Y /tmp/out.mpg 941@end example 942 943It will use the files: 944@example 945/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, 946/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... 947@end example 948 949The Y files use twice the resolution of the U and V files. They are 950raw files, without header. They can be generated by all decent video 951decoders. You must specify the size of the image with the @option{-s} option 952if ffmpeg cannot guess it. 953 954@item 955You can input from a raw YUV420P file: 956 957@example 958ffmpeg -i /tmp/test.yuv /tmp/out.avi 959@end example 960 961test.yuv is a file containing raw YUV planar data. Each frame is composed 962of the Y plane followed by the U and V planes at half vertical and 963horizontal resolution. 964 965@item 966You can output to a raw YUV420P file: 967 968@example 969ffmpeg -i mydivx.avi hugefile.yuv 970@end example 971 972@item 973You can set several input files and output files: 974 975@example 976ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg 977@end example 978 979Converts the audio file a.wav and the raw YUV video file a.yuv 980to MPEG file a.mpg. 981 982@item 983You can also do audio and video conversions at the same time: 984 985@example 986ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 987@end example 988 989Converts a.wav to MPEG audio at 22050 Hz sample rate. 990 991@item 992You can encode to several formats at the same time and define a 993mapping from input stream to output streams: 994 995@example 996ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0 997@end example 998 999Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map 1000file:index' specifies which input stream is used for each output 1001stream, in the order of the definition of output streams. 1002 1003@item 1004You can transcode decrypted VOBs: 1005 1006@example 1007ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi 1008@end example 1009 1010This is a typical DVD ripping example; the input is a VOB file, the 1011output an AVI file with MPEG-4 video and MP3 audio. Note that in this 1012command we use B-frames so the MPEG-4 stream is DivX5 compatible, and 1013GOP size is 300 which means one intra frame every 10 seconds for 29.97fps 1014input video. Furthermore, the audio stream is MP3-encoded so you need 1015to enable LAME support by passing @code{--enable-libmp3lame} to configure. 1016The mapping is particularly useful for DVD transcoding 1017to get the desired audio language. 1018 1019NOTE: To see the supported input formats, use @code{ffmpeg -formats}. 1020 1021@item 1022You can extract images from a video, or create a video from many images: 1023 1024For extracting images from a video: 1025@example 1026ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg 1027@end example 1028 1029This will extract one video frame per second from the video and will 1030output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg}, 1031etc. Images will be rescaled to fit the new WxH values. 1032 1033If you want to extract just a limited number of frames, you can use the 1034above command in combination with the -vframes or -t option, or in 1035combination with -ss to start extracting from a certain point in time. 1036 1037For creating a video from many images: 1038@example 1039ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi 1040@end example 1041 1042The syntax @code{foo-%03d.jpeg} specifies to use a decimal number 1043composed of three digits padded with zeroes to express the sequence 1044number. It is the same syntax supported by the C printf function, but 1045only formats accepting a normal integer are suitable. 1046 1047@item 1048You can put many streams of the same type in the output: 1049 1050@example 1051ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio 1052@end example 1053 1054In addition to the first video and audio streams, the resulting 1055output file @file{test12.avi} will contain the second video 1056and the second audio stream found in the input streams list. 1057 1058The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle} 1059options have to be specified immediately after the name of the output 1060file to which you want to add them. 1061 1062@end itemize 1063@c man end EXAMPLES 1064 1065@include eval.texi 1066@include encoders.texi 1067@include demuxers.texi 1068@include muxers.texi 1069@include indevs.texi 1070@include outdevs.texi 1071@include protocols.texi 1072@include bitstream_filters.texi 1073@include filters.texi 1074@include metadata.texi 1075 1076@ignore 1077 1078@setfilename ffmpeg 1079@settitle ffmpeg video converter 1080 1081@c man begin SEEALSO 1082avplay(1), avprobe(1), avserver(1) and the Libav HTML documentation 1083@c man end 1084 1085@c man begin AUTHORS 1086The Libav developers 1087@c man end 1088 1089@end ignore 1090 1091@bye 1092