Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 74dc99f2

History | View | Annotate | Download (27.6 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
@chapter Synopsis
11

    
12
The generic syntax is:
13

    
14
@example
15
@c man begin SYNOPSIS
16
ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}...
17
@c man end
18
@end example
19

    
20
@chapter Description
21
@c man begin DESCRIPTION
22

    
23
FFmpeg is a very fast video and audio converter. It can also grab from
24
a live audio/video source.
25

    
26
The command line interface is designed to be intuitive, in the sense
27
that FFmpeg tries to figure out all parameters that can possibly be
28
derived automatically. You usually only have to specify the target
29
bitrate you want.
30

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

    
34
As a general rule, options are applied to the next specified
35
file. Therefore, order is important, and you can have the same
36
option on the command line multiple times. Each occurrence is
37
then applied to the next input or output file.
38

    
39
* To set the video bitrate of the output file to 64kbit/s:
40
@example
41
ffmpeg -i input.avi -b 64k output.avi
42
@end example
43

    
44
* To force the frame rate of the output file to 24 fps:
45
@example
46
ffmpeg -i input.avi -r 24 output.avi
47
@end example
48

    
49
* To force the frame rate of the input file (valid for raw formats only)
50
to 1 fps and the frame rate of the output file to 24 fps:
51
@example
52
ffmpeg -r 1 -i input.m2v -r 24 output.avi
53
@end example
54

    
55
The format option may be needed for raw input files.
56

    
57
By default, FFmpeg tries to convert as losslessly as possible: It
58
uses the same audio and video parameters for the outputs as the one
59
specified for the inputs.
60

    
61
@c man end DESCRIPTION
62

    
63
@chapter Options
64
@c man begin OPTIONS
65

    
66
@include fftools-common-opts.texi
67

    
68
@section Main options
69

    
70
@table @option
71

    
72
@item -f @var{fmt}
73
Force format.
74

    
75
@item -i @var{filename}
76
input file name
77

    
78
@item -y
79
Overwrite output files.
80

    
81
@item -t @var{duration}
82
Restrict the transcoded/captured video sequence
83
to the duration specified in seconds.
84
@code{hh:mm:ss[.xxx]} syntax is also supported.
85

    
86
@item -fs @var{limit_size}
87
Set the file size limit.
88

    
89
@item -ss @var{position}
90
Seek to given time position in seconds.
91
@code{hh:mm:ss[.xxx]} syntax is also supported.
92

    
93
@item -itsoffset @var{offset}
94
Set the input time offset in seconds.
95
@code{[-]hh:mm:ss[.xxx]} syntax is also supported.
96
This option affects all the input files that follow it.
97
The offset is added to the timestamps of the input files.
98
Specifying a positive offset means that the corresponding
99
streams are delayed by 'offset' seconds.
100

    
101
@item -timestamp @var{time}
102
Set the recording timestamp in the container.
103
The syntax for @var{time} is:
104
@example
105
now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z])
106
@end example
107
If the value is "now" it takes the current time.
108
Time is local time unless 'Z' or 'z' is appended, in which case it is
109
interpreted as UTC.
110
If the year-month-day part is not specified it takes the current
111
year-month-day.
112

    
113
@item -metadata @var{key}=@var{value}
114
Set a metadata key/value pair.
115

    
116
For example, for setting the title in the output file:
117
@example
118
ffmpeg -i in.avi -metadata title="my title" out.flv
119
@end example
120

    
121
@item -v @var{number}
122
Set the logging verbosity level.
123

    
124
@item -target @var{type}
125
Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd",
126
"ntsc-svcd", ... ). All the format options (bitrate, codecs,
127
buffer sizes) are then set automatically. You can just type:
128

    
129
@example
130
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
131
@end example
132

    
133
Nevertheless you can specify additional options as long as you know
134
they do not conflict with the standard, as in:
135

    
136
@example
137
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
138
@end example
139

    
140
@item -dframes @var{number}
141
Set the number of data frames to record.
142

    
143
@item -scodec @var{codec}
144
Force subtitle codec ('copy' to copy stream).
145

    
146
@item -newsubtitle
147
Add a new subtitle stream to the current output stream.
148

    
149
@item -slang @var{code}
150
Set the ISO 639 language code (3 letters) of the current subtitle stream.
151

    
152
@end table
153

    
154
@section Video Options
155

    
156
@table @option
157
@item -b @var{bitrate}
158
Set the video bitrate in bit/s (default = 200 kb/s).
159
@item -vframes @var{number}
160
Set the number of video frames to record.
161
@item -r @var{fps}
162
Set frame rate (Hz value, fraction or abbreviation), (default = 25).
163
@item -s @var{size}
164
Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source).
165
The following abbreviations are recognized:
166
@table @samp
167
@item sqcif
168
128x96
169
@item qcif
170
176x144
171
@item cif
172
352x288
173
@item 4cif
174
704x576
175
@item 16cif
176
1408x1152
177
@item qqvga
178
160x120
179
@item qvga
180
320x240
181
@item vga
182
640x480
183
@item svga
184
800x600
185
@item xga
186
1024x768
187
@item uxga
188
1600x1200
189
@item qxga
190
2048x1536
191
@item sxga
192
1280x1024
193
@item qsxga
194
2560x2048
195
@item hsxga
196
5120x4096
197
@item wvga
198
852x480
199
@item wxga
200
1366x768
201
@item wsxga
202
1600x1024
203
@item wuxga
204
1920x1200
205
@item woxga
206
2560x1600
207
@item wqsxga
208
3200x2048
209
@item wquxga
210
3840x2400
211
@item whsxga
212
6400x4096
213
@item whuxga
214
7680x4800
215
@item cga
216
320x200
217
@item ega
218
640x350
219
@item hd480
220
852x480
221
@item hd720
222
1280x720
223
@item hd1080
224
1920x1080
225
@end table
226

    
227
@item -aspect @var{aspect}
228
Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).
229
@item -croptop @var{size} (deprecated - use -vf crop=width:height:x:y instead)
230
Set top crop band size (in pixels).
231
@item -cropbottom @var{size} (deprecated - use -vf crop=width:height:x:y instead)
232
Set bottom crop band size (in pixels).
233
@item -cropleft @var{size} (deprecated - use -vf crop=width:height:x:y instead)
234
Set left crop band size (in pixels).
235
@item -cropright @var{size} (deprecated - use -vf crop=width:height:x:y instead)
236
Set right crop band size (in pixels).
237
@item -padtop @var{size}
238
@item -padbottom @var{size}
239
@item -padleft @var{size}
240
@item -padright @var{size}
241
@item -padcolor @var{hex_color}
242
All the pad options have been removed. Use -vf
243
pad=width:height:x:y:color instead.
244
@item -vn
245
Disable video recording.
246
@item -bt @var{tolerance}
247
Set video bitrate tolerance (in bits, default 4000k).
248
Has a minimum value of: (target_bitrate/target_framerate).
249
In 1-pass mode, bitrate tolerance specifies how far ratecontrol is
250
willing to deviate from the target average bitrate value. This is
251
not related to min/max bitrate. Lowering tolerance too much has
252
an adverse effect on quality.
253
@item -maxrate @var{bitrate}
254
Set max video bitrate (in bit/s).
255
Requires -bufsize to be set.
256
@item -minrate @var{bitrate}
257
Set min video bitrate (in bit/s).
258
Most useful in setting up a CBR encode:
259
@example
260
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
261
@end example
262
It is of little use elsewise.
263
@item -bufsize @var{size}
264
Set video buffer verifier buffer size (in bits).
265
@item -vcodec @var{codec}
266
Force video codec to @var{codec}. Use the @code{copy} special value to
267
tell that the raw codec data must be copied as is.
268
@item -sameq
269
Use same video quality as source (implies VBR).
270

    
271
@item -pass @var{n}
272
Select the pass number (1 or 2). It is used to do two-pass
273
video encoding. The statistics of the video are recorded in the first
274
pass into a log file (see also the option -passlogfile),
275
and in the second pass that log file is used to generate the video
276
at the exact requested bitrate.
277
On pass 1, you may just deactivate audio and set output to null,
278
examples for Windows and Unix:
279
@example
280
ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL
281
ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
282
@end example
283

    
284
@item -passlogfile @var{prefix}
285
Set two-pass log file name prefix to @var{prefix}, the default file name
286
prefix is ``ffmpeg2pass''. The complete file name will be
287
@file{PREFIX-N.log}, where N is a number specific to the output
288
stream.
289

    
290
@item -newvideo
291
Add a new video stream to the current output stream.
292

    
293
@item -vlang @var{code}
294
Set the ISO 639 language code (3 letters) of the current video stream.
295

    
296
@item -vf @var{filter_graph}
297
@var{filter_graph} is a description of the filter graph to apply to
298
the input video.
299
Use the option "-filters" to show all the available filters (including
300
also sources and sinks).
301

    
302
@end table
303

    
304
@section Advanced Video Options
305

    
306
@table @option
307
@item -pix_fmt @var{format}
308
Set pixel format. Use 'list' as parameter to show all the supported
309
pixel formats.
310
@item -sws_flags @var{flags}
311
Set SwScaler flags.
312
@item -g @var{gop_size}
313
Set the group of pictures size.
314
@item -intra
315
Use only intra frames.
316
@item -vdt @var{n}
317
Discard threshold.
318
@item -qscale @var{q}
319
Use fixed video quantizer scale (VBR).
320
@item -qmin @var{q}
321
minimum video quantizer scale (VBR)
322
@item -qmax @var{q}
323
maximum video quantizer scale (VBR)
324
@item -qdiff @var{q}
325
maximum difference between the quantizer scales (VBR)
326
@item -qblur @var{blur}
327
video quantizer scale blur (VBR) (range 0.0 - 1.0)
328
@item -qcomp @var{compression}
329
video quantizer scale compression (VBR) (default 0.5).
330
Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0
331

    
332
@item -lmin @var{lambda}
333
minimum video lagrange factor (VBR)
334
@item -lmax @var{lambda}
335
max video lagrange factor (VBR)
336
@item -mblmin @var{lambda}
337
minimum macroblock quantizer scale (VBR)
338
@item -mblmax @var{lambda}
339
maximum macroblock quantizer scale (VBR)
340

    
341
These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
342
but you may use the QP2LAMBDA constant to easily convert from 'q' units:
343
@example
344
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
345
@end example
346

    
347
@item -rc_init_cplx @var{complexity}
348
initial complexity for single pass encoding
349
@item -b_qfactor @var{factor}
350
qp factor between P- and B-frames
351
@item -i_qfactor @var{factor}
352
qp factor between P- and I-frames
353
@item -b_qoffset @var{offset}
354
qp offset between P- and B-frames
355
@item -i_qoffset @var{offset}
356
qp offset between P- and I-frames
357
@item -rc_eq @var{equation}
358
Set rate control equation (@pxref{FFmpeg formula
359
evaluator}) (default = @code{tex^qComp}).
360
@item -rc_override @var{override}
361
rate control override for specific intervals
362
@item -me_method @var{method}
363
Set motion estimation method to @var{method}.
364
Available methods are (from lowest to best quality):
365
@table @samp
366
@item zero
367
Try just the (0, 0) vector.
368
@item phods
369
@item log
370
@item x1
371
@item hex
372
@item umh
373
@item epzs
374
(default method)
375
@item full
376
exhaustive search (slow and marginally better than epzs)
377
@end table
378

    
379
@item -dct_algo @var{algo}
380
Set DCT algorithm to @var{algo}. Available values are:
381
@table @samp
382
@item 0
383
FF_DCT_AUTO (default)
384
@item 1
385
FF_DCT_FASTINT
386
@item 2
387
FF_DCT_INT
388
@item 3
389
FF_DCT_MMX
390
@item 4
391
FF_DCT_MLIB
392
@item 5
393
FF_DCT_ALTIVEC
394
@end table
395

    
396
@item -idct_algo @var{algo}
397
Set IDCT algorithm to @var{algo}. Available values are:
398
@table @samp
399
@item 0
400
FF_IDCT_AUTO (default)
401
@item 1
402
FF_IDCT_INT
403
@item 2
404
FF_IDCT_SIMPLE
405
@item 3
406
FF_IDCT_SIMPLEMMX
407
@item 4
408
FF_IDCT_LIBMPEG2MMX
409
@item 5
410
FF_IDCT_PS2
411
@item 6
412
FF_IDCT_MLIB
413
@item 7
414
FF_IDCT_ARM
415
@item 8
416
FF_IDCT_ALTIVEC
417
@item 9
418
FF_IDCT_SH4
419
@item 10
420
FF_IDCT_SIMPLEARM
421
@end table
422

    
423
@item -er @var{n}
424
Set error resilience to @var{n}.
425
@table @samp
426
@item 1
427
FF_ER_CAREFUL (default)
428
@item 2
429
FF_ER_COMPLIANT
430
@item 3
431
FF_ER_AGGRESSIVE
432
@item 4
433
FF_ER_VERY_AGGRESSIVE
434
@end table
435

    
436
@item -ec @var{bit_mask}
437
Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
438
the following values:
439
@table @samp
440
@item 1
441
FF_EC_GUESS_MVS (default = enabled)
442
@item 2
443
FF_EC_DEBLOCK (default = enabled)
444
@end table
445

    
446
@item -bf @var{frames}
447
Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
448
@item -mbd @var{mode}
449
macroblock decision
450
@table @samp
451
@item 0
452
FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg).
453
@item 1
454
FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
455
@item 2
456
FF_MB_DECISION_RD: rate distortion
457
@end table
458

    
459
@item -4mv
460
Use four motion vector by macroblock (MPEG-4 only).
461
@item -part
462
Use data partitioning (MPEG-4 only).
463
@item -bug @var{param}
464
Work around encoder bugs that are not auto-detected.
465
@item -strict @var{strictness}
466
How strictly to follow the standards.
467
@item -aic
468
Enable Advanced intra coding (h263+).
469
@item -umv
470
Enable Unlimited Motion Vector (h263+)
471

    
472
@item -deinterlace
473
Deinterlace pictures.
474
@item -ilme
475
Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
476
Use this option if your input file is interlaced and you want
477
to keep the interlaced format for minimum losses.
478
The alternative is to deinterlace the input stream with
479
@option{-deinterlace}, but deinterlacing introduces losses.
480
@item -psnr
481
Calculate PSNR of compressed frames.
482
@item -vstats
483
Dump video coding statistics to @file{vstats_HHMMSS.log}.
484
@item -vstats_file @var{file}
485
Dump video coding statistics to @var{file}.
486
@item -top @var{n}
487
top=1/bottom=0/auto=-1 field first
488
@item -dc @var{precision}
489
Intra_dc_precision.
490
@item -vtag @var{fourcc/tag}
491
Force video tag/fourcc.
492
@item -qphist
493
Show QP histogram.
494
@item -vbsf @var{bitstream_filter}
495
Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump".
496
@example
497
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
498
@end example
499
@end table
500

    
501
@section Audio Options
502

    
503
@table @option
504
@item -aframes @var{number}
505
Set the number of audio frames to record.
506
@item -ar @var{freq}
507
Set the audio sampling frequency (default = 44100 Hz).
508
@item -ab @var{bitrate}
509
Set the audio bitrate in bit/s (default = 64k).
510
@item -aq @var{q}
511
Set the audio quality (codec-specific, VBR).
512
@item -ac @var{channels}
513
Set the number of audio channels (default = 1).
514
@item -an
515
Disable audio recording.
516
@item -acodec @var{codec}
517
Force audio codec to @var{codec}. Use the @code{copy} special value to
518
specify that the raw codec data must be copied as is.
519
@item -newaudio
520
Add a new audio track to the output file. If you want to specify parameters,
521
do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..).
522

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

    
527
Example:
528
@example
529
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
530
@end example
531
@item -alang @var{code}
532
Set the ISO 639 language code (3 letters) of the current audio stream.
533
@end table
534

    
535
@section Advanced Audio options:
536

    
537
@table @option
538
@item -atag @var{fourcc/tag}
539
Force audio tag/fourcc.
540
@item -absf @var{bitstream_filter}
541
Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
542
@end table
543

    
544
@section Subtitle options:
545

    
546
@table @option
547
@item -scodec @var{codec}
548
Force subtitle codec ('copy' to copy stream).
549
@item -newsubtitle
550
Add a new subtitle stream to the current output stream.
551
@item -slang @var{code}
552
Set the ISO 639 language code (3 letters) of the current subtitle stream.
553
@item -sn
554
Disable subtitle recording.
555
@item -sbsf @var{bitstream_filter}
556
Bitstream filters available are "mov2textsub", "text2movsub".
557
@example
558
ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt
559
@end example
560
@end table
561

    
562
@section Audio/Video grab options
563

    
564
@table @option
565
@item -vc @var{channel}
566
Set video grab channel (DV1394 only).
567
@item -tvstd @var{standard}
568
Set television standard (NTSC, PAL (SECAM)).
569
@item -isync
570
Synchronize read on input.
571
@end table
572

    
573
@section Advanced options
574

    
575
@table @option
576
@item -map @var{input_stream_id}[:@var{sync_stream_id}]
577
Set stream mapping from input streams to output streams.
578
Just enumerate the input streams in the order you want them in the output.
579
@var{sync_stream_id} if specified sets the input stream to sync
580
against.
581
@item -map_meta_data @var{outfile}:@var{infile}
582
Set meta data information of @var{outfile} from @var{infile}.
583
@item -debug
584
Print specific debug info.
585
@item -benchmark
586
Show benchmarking information at the end of an encode.
587
Shows CPU time used and maximum memory consumption.
588
Maximum memory consumption is not supported on all systems,
589
it will usually display as 0 if not supported.
590
@item -dump
591
Dump each input packet.
592
@item -hex
593
When dumping packets, also dump the payload.
594
@item -bitexact
595
Only use bit exact algorithms (for codec testing).
596
@item -ps @var{size}
597
Set RTP payload size in bytes.
598
@item -re
599
Read input at native frame rate. Mainly used to simulate a grab device.
600
@item -loop_input
601
Loop over the input stream. Currently it works only for image
602
streams. This option is used for automatic FFserver testing.
603
@item -loop_output @var{number_of_times}
604
Repeatedly loop output for formats that support looping such as animated GIF
605
(0 will loop the output infinitely).
606
@item -threads @var{count}
607
Thread count.
608
@item -vsync @var{parameter}
609
Video sync method.
610
0   Each frame is passed with its timestamp from the demuxer to the muxer
611
1   Frames will be duplicated and dropped to achieve exactly the requested
612
    constant framerate.
613
2   Frames are passed through with their timestamp or dropped so as to prevent
614
    2 frames from having the same timestamp
615
-1  Chooses between 1 and 2 depending on muxer capabilities. This is the default method.
616

    
617
With -map you can select from
618
which stream the timestamps should be taken. You can leave either video or
619
audio unchanged and sync the remaining stream(s) to the unchanged one.
620
@item -async @var{samples_per_second}
621
Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
622
the parameter is the maximum samples per second by which the audio is changed.
623
-async 1 is a special case where only the start of the audio stream is corrected
624
without any later correction.
625
@item -copyts
626
Copy timestamps from input to output.
627
@item -shortest
628
Finish encoding when the shortest input stream ends.
629
@item -dts_delta_threshold
630
Timestamp discontinuity delta threshold.
631
@item -muxdelay @var{seconds}
632
Set the maximum demux-decode delay.
633
@item -muxpreload @var{seconds}
634
Set the initial demux-decode delay.
635
@item -streamid @var{output-stream-index}:@var{new-value}
636
Assign a new value to a stream's stream-id field in the next output file.
637
All stream-id fields are reset to default for each output file.
638

    
639
For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for
640
an output mpegts file:
641
@example
642
ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts
643
@end example
644
@end table
645

    
646
@section Preset files
647

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

    
654
Preset files are specified with the @code{vpre}, @code{apre},
655
@code{spre}, and @code{fpre} options. The @code{fpre} option takes the
656
filename of the preset instead of a preset name as input and can be
657
used for any kind of codec. For the @code{vpre}, @code{apre}, and
658
@code{spre} options, the options specified in a preset file are
659
applied to the currently selected codec of the same type as the preset
660
option.
661

    
662
The argument passed to the @code{vpre}, @code{apre}, and @code{spre}
663
preset options identifies the preset file to use according to the
664
following rules:
665

    
666
First ffmpeg searches for a file named @var{arg}.ffpreset in the
667
directories @file{$FFMPEG_DATADIR} (if set), and @file{$HOME/.ffmpeg}, and in
668
the datadir defined at configuration time (usually @file{PREFIX/share/ffmpeg})
669
in that order. For example, if the argument is @code{libx264-max}, it will
670
search for the file @file{libx264-max.ffpreset}.
671

    
672
If no such file is found, then ffmpeg will search for a file named
673
@var{codec_name}-@var{arg}.ffpreset in the above-mentioned
674
directories, where @var{codec_name} is the name of the codec to which
675
the preset file options will be applied. For example, if you select
676
the video codec with @code{-vcodec libx264} and use @code{-vpre max},
677
then it will search for the file @file{libx264-max.ffpreset}.
678

    
679
@anchor{FFmpeg formula evaluator}
680
@section FFmpeg formula evaluator
681

    
682
When evaluating a rate control string, FFmpeg uses an internal formula
683
evaluator.
684

    
685
The following binary operators are available: @code{+}, @code{-},
686
@code{*}, @code{/}, @code{^}.
687

    
688
The following unary operators are available: @code{+}, @code{-},
689
@code{(...)}.
690

    
691
The following statements are available: @code{ld}, @code{st},
692
@code{while}.
693

    
694
The following functions are available:
695
@table @var
696
@item sinh(x)
697
@item cosh(x)
698
@item tanh(x)
699
@item sin(x)
700
@item cos(x)
701
@item tan(x)
702
@item atan(x)
703
@item asin(x)
704
@item acos(x)
705
@item exp(x)
706
@item log(x)
707
@item abs(x)
708
@item squish(x)
709
@item gauss(x)
710
@item mod(x, y)
711
@item max(x, y)
712
@item min(x, y)
713
@item eq(x, y)
714
@item gte(x, y)
715
@item gt(x, y)
716
@item lte(x, y)
717
@item lt(x, y)
718
@item bits2qp(bits)
719
@item qp2bits(qp)
720
@end table
721

    
722
The following constants are available:
723
@table @var
724
@item PI
725
@item E
726
@item iTex
727
@item pTex
728
@item tex
729
@item mv
730
@item fCode
731
@item iCount
732
@item mcVar
733
@item var
734
@item isI
735
@item isP
736
@item isB
737
@item avgQP
738
@item qComp
739
@item avgIITex
740
@item avgPITex
741
@item avgPPTex
742
@item avgBPTex
743
@item avgTex
744
@end table
745

    
746
@c man end
747

    
748
@section Protocols
749

    
750
The file name can be @file{-} to read from standard input or to write
751
to standard output.
752

    
753
FFmpeg also handles many protocols specified with an URL syntax.
754

    
755
Use 'ffmpeg -protocols' to see a list of the supported protocols.
756

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

    
761
@chapter Tips
762
@c man begin TIPS
763

    
764
@itemize
765
@item
766
For streaming at very low bitrate application, use a low frame rate
767
and a small GOP size. This is especially true for RealVideo where
768
the Linux player does not seem to be very fast, so it can miss
769
frames. An example is:
770

    
771
@example
772
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
773
@end example
774

    
775
@item
776
The parameter 'q' which is displayed while encoding is the current
777
quantizer. The value 1 indicates that a very good quality could
778
be achieved. The value 31 indicates the worst quality. If q=31 appears
779
too often, it means that the encoder cannot compress enough to meet
780
your bitrate. You must either increase the bitrate, decrease the
781
frame rate or decrease the frame size.
782

    
783
@item
784
If your computer is not fast enough, you can speed up the
785
compression at the expense of the compression ratio. You can use
786
'-me zero' to speed up motion estimation, and '-intra' to disable
787
motion estimation completely (you have only I-frames, which means it
788
is about as good as JPEG compression).
789

    
790
@item
791
To have very low audio bitrates, reduce the sampling frequency
792
(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
793

    
794
@item
795
To have a constant quality (but a variable bitrate), use the option
796
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
797
quality).
798

    
799
@item
800
When converting video files, you can use the '-sameq' option which
801
uses the same quality factor in the encoder as in the decoder.
802
It allows almost lossless encoding.
803

    
804
@end itemize
805
@c man end TIPS
806

    
807
@chapter Examples
808
@c man begin EXAMPLES
809

    
810
@section Video and Audio grabbing
811

    
812
FFmpeg can grab video and audio from devices given that you specify the input
813
format and device.
814

    
815
@example
816
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
817
@end example
818

    
819
Note that you must activate the right video source and channel before
820
launching FFmpeg with any TV viewer such as xawtv
821
(@url{http://linux.bytesex.org/xawtv/}) by Gerd Knorr. You also
822
have to set the audio recording levels correctly with a
823
standard mixer.
824

    
825
@section X11 grabbing
826

    
827
FFmpeg can grab the X11 display.
828

    
829
@example
830
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg
831
@end example
832

    
833
0.0 is display.screen number of your X11 server, same as
834
the DISPLAY environment variable.
835

    
836
@example
837
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg
838
@end example
839

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

    
843
@section Video and Audio file format conversion
844

    
845
* FFmpeg can use any supported file format and protocol as input:
846

    
847
Examples:
848

    
849
* You can use YUV files as input:
850

    
851
@example
852
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
853
@end example
854

    
855
It will use the files:
856
@example
857
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
858
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
859
@end example
860

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

    
866
* You can input from a raw YUV420P file:
867

    
868
@example
869
ffmpeg -i /tmp/test.yuv /tmp/out.avi
870
@end example
871

    
872
test.yuv is a file containing raw YUV planar data. Each frame is composed
873
of the Y plane followed by the U and V planes at half vertical and
874
horizontal resolution.
875

    
876
* You can output to a raw YUV420P file:
877

    
878
@example
879
ffmpeg -i mydivx.avi hugefile.yuv
880
@end example
881

    
882
* You can set several input files and output files:
883

    
884
@example
885
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
886
@end example
887

    
888
Converts the audio file a.wav and the raw YUV video file a.yuv
889
to MPEG file a.mpg.
890

    
891
* You can also do audio and video conversions at the same time:
892

    
893
@example
894
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
895
@end example
896

    
897
Converts a.wav to MPEG audio at 22050 Hz sample rate.
898

    
899
* You can encode to several formats at the same time and define a
900
mapping from input stream to output streams:
901

    
902
@example
903
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
904
@end example
905

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

    
910
* You can transcode decrypted VOBs:
911

    
912
@example
913
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
914
@end example
915

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

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

    
927
* You can extract images from a video, or create a video from many images:
928

    
929
For extracting images from a video:
930
@example
931
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
932
@end example
933

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

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

    
942
For creating a video from many images:
943
@example
944
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
945
@end example
946

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

    
952
* You can put many streams of the same type in the output:
953

    
954
@example
955
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
956
@end example
957

    
958
In addition to the first video and audio streams, the resulting
959
output file @file{test12.avi} will contain the second video
960
and the second audio stream found in the input streams list.
961

    
962
The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle}
963
options have to be specified immediately after the name of the output
964
file to which you want to add them.
965
@c man end EXAMPLES
966

    
967
@include filters.texi
968

    
969
@ignore
970

    
971
@setfilename ffmpeg
972
@settitle FFmpeg video converter
973

    
974
@c man begin SEEALSO
975
ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation
976
@c man end
977

    
978
@c man begin AUTHORS
979
The FFmpeg developers
980
@c man end
981

    
982
@end ignore
983

    
984
@bye