Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 593b3219

History | View | Annotate | Download (26 KB)

1
\input texinfo @c -*- texinfo -*-
2

    
3
@settitle FFmpeg Documentation
4
@titlepage
5
@sp 7
6
@center @titlefont{FFmpeg Documentation}
7
@sp 3
8
@end titlepage
9

    
10

    
11
@chapter Introduction
12

    
13
FFmpeg is a very fast video and audio converter. It can also grab from
14
a live audio/video source.
15

    
16
The command line interface is designed to be intuitive, in the sense
17
that FFmpeg tries to figure out all parameters that can possibly be
18
derived automatically. You usually only have to specify the target
19
bitrate you want.
20

    
21
FFmpeg can also convert from any sample rate to any other, and resize
22
video on the fly with a high quality polyphase filter.
23

    
24
@chapter Quick Start
25

    
26
@c man begin EXAMPLES
27
@section Video and Audio grabbing
28

    
29
FFmpeg can grab video and audio from devices given that you specify the input
30
format and device.
31

    
32
@example
33
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
34
@end example
35

    
36
Note that you must activate the right video source and channel before
37
launching FFmpeg with any TV viewer such as xawtv
38
(@url{http://bytesex.org/xawtv/}) by Gerd Knorr. You also
39
have to set the audio recording levels correctly with a
40
standard mixer.
41

    
42
@section X11 grabbing
43

    
44
FFmpeg can grab the X11 display.
45

    
46
@example
47
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg
48
@end example
49

    
50
0.0 is display.screen number of your X11 server, same as
51
the DISPLAY environment variable.
52

    
53
@example
54
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg
55
@end example
56

    
57
0.0 is display.screen number of your X11 server, same as the DISPLAY environment
58
variable. 10 is the x-offset and 20 the y-offset for the grabbing.
59

    
60
@section Video and Audio file format conversion
61

    
62
* FFmpeg can use any supported file format and protocol as input:
63

    
64
Examples:
65

    
66
* You can use YUV files as input:
67

    
68
@example
69
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
70
@end example
71

    
72
It will use the files:
73
@example
74
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
75
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
76
@end example
77

    
78
The Y files use twice the resolution of the U and V files. They are
79
raw files, without header. They can be generated by all decent video
80
decoders. You must specify the size of the image with the @option{-s} option
81
if FFmpeg cannot guess it.
82

    
83
* You can input from a raw YUV420P file:
84

    
85
@example
86
ffmpeg -i /tmp/test.yuv /tmp/out.avi
87
@end example
88

    
89
test.yuv is a file containing raw YUV planar data. Each frame is composed
90
of the Y plane followed by the U and V planes at half vertical and
91
horizontal resolution.
92

    
93
* You can output to a raw YUV420P file:
94

    
95
@example
96
ffmpeg -i mydivx.avi hugefile.yuv
97
@end example
98

    
99
* You can set several input files and output files:
100

    
101
@example
102
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
103
@end example
104

    
105
Converts the audio file a.wav and the raw YUV video file a.yuv
106
to MPEG file a.mpg.
107

    
108
* You can also do audio and video conversions at the same time:
109

    
110
@example
111
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
112
@end example
113

    
114
Converts a.wav to MPEG audio at 22050 Hz sample rate.
115

    
116
* You can encode to several formats at the same time and define a
117
mapping from input stream to output streams:
118

    
119
@example
120
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
121
@end example
122

    
123
Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map
124
file:index' specifies which input stream is used for each output
125
stream, in the order of the definition of output streams.
126

    
127
* You can transcode decrypted VOBs:
128

    
129
@example
130
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
131
@end example
132

    
133
This is a typical DVD ripping example; the input is a VOB file, the
134
output an AVI file with MPEG-4 video and MP3 audio. Note that in this
135
command we use B-frames so the MPEG-4 stream is DivX5 compatible, and
136
GOP size is 300 which means one intra frame every 10 seconds for 29.97fps
137
input video. Furthermore, the audio stream is MP3-encoded so you need
138
to enable LAME support by passing @code{--enable-libmp3lame} to configure.
139
The mapping is particularly useful for DVD transcoding
140
to get the desired audio language.
141

    
142
NOTE: To see the supported input formats, use @code{ffmpeg -formats}.
143

    
144
* You can extract images from a video:
145

    
146
@example
147
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
148
@end example
149

    
150
This will extract one video frame per second from the video and will
151
output them in files named @file{foo-001.jpeg}, @file{foo-002.jpeg},
152
etc. Images will be rescaled to fit the new WxH values.
153

    
154
The syntax @code{foo-%03d.jpeg} specifies to use a decimal number
155
composed of three digits padded with zeroes to express the sequence
156
number. It is the same syntax supported by the C printf function, but
157
only formats accepting a normal integer are suitable.
158

    
159
If you want to extract just a limited number of frames, you can use the
160
above command in combination with the -vframes or -t option, or in
161
combination with -ss to start extracting from a certain point in time.
162

    
163
* You can put many streams of the same type in the output:
164

    
165
@example
166
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
167
@end example
168

    
169
In addition to the first video and audio streams, the resulting
170
output file @file{test12.avi} will contain the second video
171
and the second audio stream found in the input streams list.
172

    
173
The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle}
174
options have to be specified immediately after the name of the output
175
file to which you want to add them.
176
@c man end
177

    
178
@chapter Invocation
179

    
180
@section Syntax
181

    
182
The generic syntax is:
183

    
184
@example
185
@c man begin SYNOPSIS
186
ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}...
187
@c man end
188
@end example
189
@c man begin DESCRIPTION
190
As a general rule, options are applied to the next specified
191
file. Therefore, order is important, and you can have the same
192
option on the command line multiple times. Each occurrence is
193
then applied to the next input or output file.
194

    
195
* To set the video bitrate of the output file to 64kbit/s:
196
@example
197
ffmpeg -i input.avi -b 64k output.avi
198
@end example
199

    
200
* To force the frame rate of the output file to 24 fps:
201
@example
202
ffmpeg -i input.avi -r 24 output.avi
203
@end example
204

    
205
* To force the frame rate of the input file (valid for raw formats only)
206
to 1 fps and the frame rate of the output file to 24 fps:
207
@example
208
ffmpeg -r 1 -i input.m2v -r 24 output.avi
209
@end example
210

    
211
The format option may be needed for raw input files.
212

    
213
By default, FFmpeg tries to convert as losslessly as possible: It
214
uses the same audio and video parameters for the outputs as the one
215
specified for the inputs.
216
@c man end
217

    
218
@c man begin OPTIONS
219
@section Main options
220

    
221
@table @option
222
@item -L
223
Show license.
224

    
225
@item -h
226
Show help.
227

    
228
@item -version
229
Show version.
230

    
231
@item -formats
232
Show available formats, codecs, protocols, ...
233

    
234
@item -f @var{fmt}
235
Force format.
236

    
237
@item -i @var{filename}
238
input file name
239

    
240
@item -y
241
Overwrite output files.
242

    
243
@item -t @var{duration}
244
Restrict the transcoded/captured video sequence
245
to the duration specified in seconds.
246
@code{hh:mm:ss[.xxx]} syntax is also supported.
247

    
248
@item -fs @var{limit_size}
249
Set the file size limit.
250

    
251
@item -ss @var{position}
252
Seek to given time position in seconds.
253
@code{hh:mm:ss[.xxx]} syntax is also supported.
254

    
255
@item -itsoffset @var{offset}
256
Set the input time offset in seconds.
257
@code{[-]hh:mm:ss[.xxx]} syntax is also supported.
258
This option affects all the input files that follow it.
259
The offset is added to the timestamps of the input files.
260
Specifying a positive offset means that the corresponding
261
streams are delayed by 'offset' seconds.
262

    
263
@item -title @var{string}
264
Set the title.
265

    
266
@item -timestamp @var{time}
267
Set the timestamp.
268

    
269
@item -author @var{string}
270
Set the author.
271

    
272
@item -copyright @var{string}
273
Set the copyright.
274

    
275
@item -comment @var{string}
276
Set the comment.
277

    
278
@item -album @var{string}
279
Set the album.
280

    
281
@item -track @var{number}
282
Set the track.
283

    
284
@item -year @var{number}
285
Set the year.
286

    
287
@item -v @var{number}
288
Set the logging verbosity level.
289

    
290
@item -target @var{type}
291
Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd",
292
"ntsc-svcd", ... ). All the format options (bitrate, codecs,
293
buffer sizes) are then set automatically. You can just type:
294

    
295
@example
296
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
297
@end example
298

    
299
Nevertheless you can specify additional options as long as you know
300
they do not conflict with the standard, as in:
301

    
302
@example
303
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
304
@end example
305

    
306
@item -dframes @var{number}
307
Set the number of data frames to record.
308

    
309
@item -scodec @var{codec}
310
Force subtitle codec ('copy' to copy stream).
311

    
312
@item -newsubtitle
313
Add a new subtitle stream to the current output stream.
314

    
315
@item -slang @var{code}
316
Set the ISO 639 language code (3 letters) of the current subtitle stream.
317

    
318
@end table
319

    
320
@section Video Options
321

    
322
@table @option
323
@item -b @var{bitrate}
324
Set the video bitrate in bit/s (default = 200 kb/s).
325
@item -vframes @var{number}
326
Set the number of video frames to record.
327
@item -r @var{fps}
328
Set frame rate (Hz value, fraction or abbreviation), (default = 25).
329
@item -s @var{size}
330
Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source).
331
The following abbreviations are recognized:
332
@table @samp
333
@item sqcif
334
128x96
335
@item qcif
336
176x144
337
@item cif
338
352x288
339
@item 4cif
340
704x576
341
@item qqvga
342
160x120
343
@item qvga
344
320x240
345
@item vga
346
640x480
347
@item svga
348
800x600
349
@item xga
350
1024x768
351
@item uxga
352
1600x1200
353
@item qxga
354
2048x1536
355
@item sxga
356
1280x1024
357
@item qsxga
358
2560x2048
359
@item hsxga
360
5120x4096
361
@item wvga
362
852x480
363
@item wxga
364
1366x768
365
@item wsxga
366
1600x1024
367
@item wuxga
368
1920x1200
369
@item woxga
370
2560x1600
371
@item wqsxga
372
3200x2048
373
@item wquxga
374
3840x2400
375
@item whsxga
376
6400x4096
377
@item whuxga
378
7680x4800
379
@item cga
380
320x200
381
@item ega
382
640x350
383
@item hd480
384
852x480
385
@item hd720
386
1280x720
387
@item hd1080
388
1920x1080
389
@end table
390

    
391
@item -aspect @var{aspect}
392
Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).
393
@item -croptop @var{size}
394
Set top crop band size (in pixels).
395
@item -cropbottom @var{size}
396
Set bottom crop band size (in pixels).
397
@item -cropleft @var{size}
398
Set left crop band size (in pixels).
399
@item -cropright @var{size}
400
Set right crop band size (in pixels).
401
@item -padtop @var{size}
402
Set top pad band size (in pixels).
403
@item -padbottom @var{size}
404
Set bottom pad band size (in pixels).
405
@item -padleft @var{size}
406
Set left pad band size (in pixels).
407
@item -padright @var{size}
408
Set right pad band size (in pixels).
409
@item -padcolor @var{hex_color}
410
Set color of padded bands. The value for padcolor is expressed
411
as a six digit hexadecimal number where the first two digits
412
represent red, the middle two digits green and last two digits
413
blue (default = 000000 (black)).
414
@item -vn
415
Disable video recording.
416
@item -bt @var{tolerance}
417
Set video bitrate tolerance (in bits, default 4000k).
418
Has a minimum value of: (target_bitrate/target_framerate).
419
In 1-pass mode, bitrate tolerance specifies how far ratecontrol is
420
willing to deviate from the target average bitrate value. This is
421
not related to min/max bitrate. Lowering tolerance too much has
422
an adverse effect on quality.
423
@item -maxrate @var{bitrate}
424
Set max video bitrate (in bit/s).
425
Requires -bufsize to be set.
426
@item -minrate @var{bitrate}
427
Set min video bitrate (in bit/s).
428
Most useful in setting up a CBR encode:
429
@example
430
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
431
@end example
432
It is of little use elsewise.
433
@item -bufsize @var{size}
434
Set video buffer verifier buffer size (in bits).
435
@item -vcodec @var{codec}
436
Force video codec to @var{codec}. Use the @code{copy} special value to
437
tell that the raw codec data must be copied as is.
438
@item -sameq
439
Use same video quality as source (implies VBR).
440

    
441
@item -pass @var{n}
442
Select the pass number (1 or 2). It is used to do two-pass
443
video encoding. The statistics of the video are recorded in the first
444
pass into a log file (see also the option -passlogfile),
445
and in the second pass that log file is used to generate the video
446
at the exact requested bitrate.
447
On pass 1, you may just deactivate audio and set output to null,
448
examples for Windows and Unix:
449
@example
450
ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL
451
ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
452
@end example
453

    
454
@item -passlogfile @var{prefix}
455
Set two-pass log file name prefix to @var{prefix}, the default file name
456
prefix is ``ffmpeg2pass''. The complete file name will be
457
@file{PREFIX-N.log}, where N is a number specific to the output
458
stream.
459

    
460
@item -newvideo
461
Add a new video stream to the current output stream.
462

    
463
@end table
464

    
465
@section Advanced Video Options
466

    
467
@table @option
468
@item -pix_fmt @var{format}
469
Set pixel format. Use 'list' as parameter to show all the supported
470
pixel formats.
471
@item -sws_flags @var{flags}
472
Set SwScaler flags (only available when compiled with swscale support).
473
@item -g @var{gop_size}
474
Set the group of pictures size.
475
@item -intra
476
Use only intra frames.
477
@item -vdt @var{n}
478
Discard threshold.
479
@item -qscale @var{q}
480
Use fixed video quantizer scale (VBR).
481
@item -qmin @var{q}
482
minimum video quantizer scale (VBR)
483
@item -qmax @var{q}
484
maximum video quantizer scale (VBR)
485
@item -qdiff @var{q}
486
maximum difference between the quantizer scales (VBR)
487
@item -qblur @var{blur}
488
video quantizer scale blur (VBR) (range 0.0 - 1.0)
489
@item -qcomp @var{compression}
490
video quantizer scale compression (VBR) (default 0.5).
491
Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0
492

    
493
@item -lmin @var{lambda}
494
minimum video lagrange factor (VBR)
495
@item -lmax @var{lambda}
496
max video lagrange factor (VBR)
497
@item -mblmin @var{lambda}
498
minimum macroblock quantizer scale (VBR)
499
@item -mblmax @var{lambda}
500
maximum macroblock quantizer scale (VBR)
501

    
502
These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
503
but you may use the QP2LAMBDA constant to easily convert from 'q' units:
504
@example
505
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
506
@end example
507

    
508
@item -rc_init_cplx @var{complexity}
509
initial complexity for single pass encoding
510
@item -b_qfactor @var{factor}
511
qp factor between P- and B-frames
512
@item -i_qfactor @var{factor}
513
qp factor between P- and I-frames
514
@item -b_qoffset @var{offset}
515
qp offset between P- and B-frames
516
@item -i_qoffset @var{offset}
517
qp offset between P- and I-frames
518
@item -rc_eq @var{equation}
519
Set rate control equation (@pxref{FFmpeg formula
520
evaluator}) (default = @code{tex^qComp}).
521
@item -rc_override @var{override}
522
rate control override for specific intervals
523
@item -me_method @var{method}
524
Set motion estimation method to @var{method}.
525
Available methods are (from lowest to best quality):
526
@table @samp
527
@item zero
528
Try just the (0, 0) vector.
529
@item phods
530
@item log
531
@item x1
532
@item hex
533
@item umh
534
@item epzs
535
(default method)
536
@item full
537
exhaustive search (slow and marginally better than epzs)
538
@end table
539

    
540
@item -dct_algo @var{algo}
541
Set DCT algorithm to @var{algo}. Available values are:
542
@table @samp
543
@item 0
544
FF_DCT_AUTO (default)
545
@item 1
546
FF_DCT_FASTINT
547
@item 2
548
FF_DCT_INT
549
@item 3
550
FF_DCT_MMX
551
@item 4
552
FF_DCT_MLIB
553
@item 5
554
FF_DCT_ALTIVEC
555
@end table
556

    
557
@item -idct_algo @var{algo}
558
Set IDCT algorithm to @var{algo}. Available values are:
559
@table @samp
560
@item 0
561
FF_IDCT_AUTO (default)
562
@item 1
563
FF_IDCT_INT
564
@item 2
565
FF_IDCT_SIMPLE
566
@item 3
567
FF_IDCT_SIMPLEMMX
568
@item 4
569
FF_IDCT_LIBMPEG2MMX
570
@item 5
571
FF_IDCT_PS2
572
@item 6
573
FF_IDCT_MLIB
574
@item 7
575
FF_IDCT_ARM
576
@item 8
577
FF_IDCT_ALTIVEC
578
@item 9
579
FF_IDCT_SH4
580
@item 10
581
FF_IDCT_SIMPLEARM
582
@end table
583

    
584
@item -er @var{n}
585
Set error resilience to @var{n}.
586
@table @samp
587
@item 1
588
FF_ER_CAREFUL (default)
589
@item 2
590
FF_ER_COMPLIANT
591
@item 3
592
FF_ER_AGGRESSIVE
593
@item 4
594
FF_ER_VERY_AGGRESSIVE
595
@end table
596

    
597
@item -ec @var{bit_mask}
598
Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
599
the following values:
600
@table @samp
601
@item 1
602
FF_EC_GUESS_MVS (default = enabled)
603
@item 2
604
FF_EC_DEBLOCK (default = enabled)
605
@end table
606

    
607
@item -bf @var{frames}
608
Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
609
@item -mbd @var{mode}
610
macroblock decision
611
@table @samp
612
@item 0
613
FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg).
614
@item 1
615
FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
616
@item 2
617
FF_MB_DECISION_RD: rate distortion
618
@end table
619

    
620
@item -4mv
621
Use four motion vector by macroblock (MPEG-4 only).
622
@item -part
623
Use data partitioning (MPEG-4 only).
624
@item -bug @var{param}
625
Work around encoder bugs that are not auto-detected.
626
@item -strict @var{strictness}
627
How strictly to follow the standards.
628
@item -aic
629
Enable Advanced intra coding (h263+).
630
@item -umv
631
Enable Unlimited Motion Vector (h263+)
632

    
633
@item -deinterlace
634
Deinterlace pictures.
635
@item -ilme
636
Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
637
Use this option if your input file is interlaced and you want
638
to keep the interlaced format for minimum losses.
639
The alternative is to deinterlace the input stream with
640
@option{-deinterlace}, but deinterlacing introduces losses.
641
@item -psnr
642
Calculate PSNR of compressed frames.
643
@item -vstats
644
Dump video coding statistics to @file{vstats_HHMMSS.log}.
645
@item -vstats_file @var{file}
646
Dump video coding statistics to @var{file}.
647
@item -vhook @var{module}
648
Insert video processing @var{module}. @var{module} contains the module
649
name and its parameters separated by spaces.
650
@item -top @var{n}
651
top=1/bottom=0/auto=-1 field first
652
@item -dc @var{precision}
653
Intra_dc_precision.
654
@item -vtag @var{fourcc/tag}
655
Force video tag/fourcc.
656
@item -qphist
657
Show QP histogram.
658
@item -vbsf @var{bitstream_filter}
659
Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump".
660
@example
661
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
662
@end example
663
@end table
664

    
665
@section Audio Options
666

    
667
@table @option
668
@item -aframes @var{number}
669
Set the number of audio frames to record.
670
@item -ar @var{freq}
671
Set the audio sampling frequency (default = 44100 Hz).
672
@item -ab @var{bitrate}
673
Set the audio bitrate in bit/s (default = 64k).
674
@item -ac @var{channels}
675
Set the number of audio channels (default = 1).
676
@item -an
677
Disable audio recording.
678
@item -acodec @var{codec}
679
Force audio codec to @var{codec}. Use the @code{copy} special value to
680
specify that the raw codec data must be copied as is.
681
@item -newaudio
682
Add a new audio track to the output file. If you want to specify parameters,
683
do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..).
684

    
685
Mapping will be done automatically, if the number of output streams is equal to
686
the number of input streams, else it will pick the first one that matches. You
687
can override the mapping using @code{-map} as usual.
688

    
689
Example:
690
@example
691
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
692
@end example
693
@item -alang @var{code}
694
Set the ISO 639 language code (3 letters) of the current audio stream.
695
@end table
696

    
697
@section Advanced Audio options:
698

    
699
@table @option
700
@item -atag @var{fourcc/tag}
701
Force audio tag/fourcc.
702
@item -absf @var{bitstream_filter}
703
Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
704
@end table
705

    
706
@section Subtitle options:
707

    
708
@table @option
709
@item -scodec @var{codec}
710
Force subtitle codec ('copy' to copy stream).
711
@item -newsubtitle
712
Add a new subtitle stream to the current output stream.
713
@item -slang @var{code}
714
Set the ISO 639 language code (3 letters) of the current subtitle stream.
715
@item -sbsf @var{bitstream_filter}
716
Bitstream filters available are "mov2textsub", "text2movsub".
717
@example
718
ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt
719
@end example
720
@end table
721

    
722
@section Audio/Video grab options
723

    
724
@table @option
725
@item -vc @var{channel}
726
Set video grab channel (DV1394 only).
727
@item -tvstd @var{standard}
728
Set television standard (NTSC, PAL (SECAM)).
729
@item -isync
730
Synchronize read on input.
731
@end table
732

    
733
@section Advanced options
734

    
735
@table @option
736
@item -map @var{input_stream_id}[:@var{sync_stream_id}]
737
Set stream mapping from input streams to output streams.
738
Just enumerate the input streams in the order you want them in the output.
739
@var{sync_stream_id} if specified sets the input stream to sync
740
against.
741
@item -map_meta_data @var{outfile}:@var{infile}
742
Set meta data information of @var{outfile} from @var{infile}.
743
@item -debug
744
Print specific debug info.
745
@item -benchmark
746
Add timings for benchmarking.
747
@item -dump
748
Dump each input packet.
749
@item -hex
750
When dumping packets, also dump the payload.
751
@item -bitexact
752
Only use bit exact algorithms (for codec testing).
753
@item -ps @var{size}
754
Set packet size in bits.
755
@item -re
756
Read input at native frame rate. Mainly used to simulate a grab device.
757
@item -loop_input
758
Loop over the input stream. Currently it works only for image
759
streams. This option is used for automatic FFserver testing.
760
@item -loop_output @var{number_of_times}
761
Repeatedly loop output for formats that support looping such as animated GIF
762
(0 will loop the output infinitely).
763
@item -threads @var{count}
764
Thread count.
765
@item -vsync @var{parameter}
766
Video sync method. Video will be stretched/squeezed to match the timestamps,
767
it is done by duplicating and dropping frames. With -map you can select from
768
which stream the timestamps should be taken. You can leave either video or
769
audio unchanged and sync the remaining stream(s) to the unchanged one.
770
@item -async @var{samples_per_second}
771
Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
772
the parameter is the maximum samples per second by which the audio is changed.
773
-async 1 is a special case where only the start of the audio stream is corrected
774
without any later correction.
775
@item -copyts
776
Copy timestamps from input to output.
777
@item -shortest
778
Finish encoding when the shortest input stream ends.
779
@item -dts_delta_threshold
780
Timestamp discontinuity delta threshold.
781
@item -muxdelay @var{seconds}
782
Set the maximum demux-decode delay.
783
@item -muxpreload @var{seconds}
784
Set the initial demux-decode delay.
785
@end table
786

    
787
@section Preset files
788

    
789
A preset file contains a sequence of @var{option}=@var{value} pairs,
790
one for each line, specifying a sequence of options which would be
791
awkward to specify on the command line. Lines starting with the hash
792
('#') character are ignored and are used to provide comments. Check
793
the @file{ffpresets} directory in the FFmpeg source tree for examples.
794

    
795
Preset files are specified with the @code{vpre}, @code{apre} and
796
@code{spre} options. The options specified in a preset file are
797
applied to the currently selected codec of the same type as the preset
798
option.
799

    
800
The argument passed to the preset options identifies the preset file
801
to use according to the following rules.
802

    
803
First ffmpeg searches for a file named @var{arg}.ffpreset in the
804
directories @file{$HOME/.ffmpeg}, @file{/usr/local/share/ffmpeg} and
805
@file{/usr/share/ffmpeg} in that order. For example, if the argument
806
is @code{libx264-max}, it will search for the file
807
@file{libx264-max.ffpreset}.
808

    
809
If no such file is found, then ffmpeg will search for a file named
810
@var{codec_name}-@var{arg}.ffpreset in the above-mentioned
811
directories, where @var{codec_name} is the name of the codec to which
812
the preset file options will be applied. For example, if you select
813
the video codec with @code{-vcodec libx264} and use @code{-vpre max},
814
then it will search for the file @file{libx264-max.ffpreset}.
815

    
816
Finally, if the above rules failed and the argument specifies an
817
absolute pathname, ffmpeg will search for that filename. This way you
818
can specify the absolute and complete filename of the preset file, for
819
example @file{./ffpresets/libx264-max.ffpreset}.
820

    
821
@node FFmpeg formula evaluator
822
@section FFmpeg formula evaluator
823

    
824
When evaluating a rate control string, FFmpeg uses an internal formula
825
evaluator.
826

    
827
The following binary operators are available: @code{+}, @code{-},
828
@code{*}, @code{/}, @code{^}.
829

    
830
The following unary operators are available: @code{+}, @code{-},
831
@code{(...)}.
832

    
833
The following functions are available:
834
@table @var
835
@item sinh(x)
836
@item cosh(x)
837
@item tanh(x)
838
@item sin(x)
839
@item cos(x)
840
@item tan(x)
841
@item atan(x)
842
@item asin(x)
843
@item acos(x)
844
@item exp(x)
845
@item log(x)
846
@item abs(x)
847
@item squish(x)
848
@item gauss(x)
849
@item mod(x, y)
850
@item max(x, y)
851
@item min(x, y)
852
@item eq(x, y)
853
@item gte(x, y)
854
@item gt(x, y)
855
@item lte(x, y)
856
@item lt(x, y)
857
@item bits2qp(bits)
858
@item qp2bits(qp)
859
@end table
860

    
861
The following constants are available:
862
@table @var
863
@item PI
864
@item E
865
@item iTex
866
@item pTex
867
@item tex
868
@item mv
869
@item fCode
870
@item iCount
871
@item mcVar
872
@item var
873
@item isI
874
@item isP
875
@item isB
876
@item avgQP
877
@item qComp
878
@item avgIITex
879
@item avgPITex
880
@item avgPPTex
881
@item avgBPTex
882
@item avgTex
883
@end table
884

    
885
@c man end
886

    
887
@ignore
888

    
889
@setfilename ffmpeg
890
@settitle FFmpeg video converter
891

    
892
@c man begin SEEALSO
893
ffserver(1), ffplay(1) and the HTML documentation of @file{ffmpeg}.
894
@c man end
895

    
896
@c man begin AUTHOR
897
Fabrice Bellard
898
@c man end
899

    
900
@end ignore
901

    
902
@section Protocols
903

    
904
The file name can be @file{-} to read from standard input or to write
905
to standard output.
906

    
907
FFmpeg also handles many protocols specified with an URL syntax.
908

    
909
Use 'ffmpeg -formats' to see a list of the supported protocols.
910

    
911
The protocol @code{http:} is currently used only to communicate with
912
FFserver (see the FFserver documentation). When FFmpeg will be a
913
video player it will also be used for streaming :-)
914

    
915
@chapter Tips
916

    
917
@itemize
918
@item For streaming at very low bitrate application, use a low frame rate
919
and a small GOP size. This is especially true for RealVideo where
920
the Linux player does not seem to be very fast, so it can miss
921
frames. An example is:
922

    
923
@example
924
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
925
@end example
926

    
927
@item  The parameter 'q' which is displayed while encoding is the current
928
quantizer. The value 1 indicates that a very good quality could
929
be achieved. The value 31 indicates the worst quality. If q=31 appears
930
too often, it means that the encoder cannot compress enough to meet
931
your bitrate. You must either increase the bitrate, decrease the
932
frame rate or decrease the frame size.
933

    
934
@item If your computer is not fast enough, you can speed up the
935
compression at the expense of the compression ratio. You can use
936
'-me zero' to speed up motion estimation, and '-intra' to disable
937
motion estimation completely (you have only I-frames, which means it
938
is about as good as JPEG compression).
939

    
940
@item To have very low audio bitrates, reduce the sampling frequency
941
(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
942

    
943
@item To have a constant quality (but a variable bitrate), use the option
944
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
945
quality).
946

    
947
@item When converting video files, you can use the '-sameq' option which
948
uses the same quality factor in the encoder as in the decoder.
949
It allows almost lossless encoding.
950

    
951
@end itemize
952

    
953
@bye