Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 2bc05d35

History | View | Annotate | Download (27.4 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 the crop filter instead)
230
Set top crop band size (in pixels).
231
@item -cropbottom @var{size} (deprecated - use the crop filter instead)
232
Set bottom crop band size (in pixels).
233
@item -cropleft @var{size} (deprecated - use the crop filter instead)
234
Set left crop band size (in pixels).
235
@item -cropright @var{size} (deprecated - use the crop filter 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. For input streams it is set by
514
default to 1, for output streams it is set by default to the same
515
number of audio channels in input. If the input file has audio streams
516
with different channel count, the behaviour is undefined.
517
@item -an
518
Disable audio recording.
519
@item -acodec @var{codec}
520
Force audio codec to @var{codec}. Use the @code{copy} special value to
521
specify that the raw codec data must be copied as is.
522
@item -newaudio
523
Add a new audio track to the output file. If you want to specify parameters,
524
do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..).
525

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

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

    
538
@section Advanced Audio options:
539

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

    
547
@section Subtitle options:
548

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

    
565
@section Audio/Video grab options
566

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

    
576
@section Advanced options
577

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

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

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

    
649
@section Preset files
650

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

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

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

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

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

    
682
@anchor{FFmpeg formula evaluator}
683
@section FFmpeg formula evaluator
684

    
685
When evaluating a rate control string, FFmpeg uses an internal formula
686
evaluator.
687

    
688
The following binary operators are available: @code{+}, @code{-},
689
@code{*}, @code{/}, @code{^}.
690

    
691
The following unary operators are available: @code{+}, @code{-},
692
@code{(...)}.
693

    
694
The following statements are available: @code{ld}, @code{st},
695
@code{while}.
696

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

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

    
749
@c man end
750

    
751
@chapter Tips
752
@c man begin TIPS
753

    
754
@itemize
755
@item
756
For streaming at very low bitrate application, use a low frame rate
757
and a small GOP size. This is especially true for RealVideo where
758
the Linux player does not seem to be very fast, so it can miss
759
frames. An example is:
760

    
761
@example
762
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
763
@end example
764

    
765
@item
766
The parameter 'q' which is displayed while encoding is the current
767
quantizer. The value 1 indicates that a very good quality could
768
be achieved. The value 31 indicates the worst quality. If q=31 appears
769
too often, it means that the encoder cannot compress enough to meet
770
your bitrate. You must either increase the bitrate, decrease the
771
frame rate or decrease the frame size.
772

    
773
@item
774
If your computer is not fast enough, you can speed up the
775
compression at the expense of the compression ratio. You can use
776
'-me zero' to speed up motion estimation, and '-intra' to disable
777
motion estimation completely (you have only I-frames, which means it
778
is about as good as JPEG compression).
779

    
780
@item
781
To have very low audio bitrates, reduce the sampling frequency
782
(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
783

    
784
@item
785
To have a constant quality (but a variable bitrate), use the option
786
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
787
quality).
788

    
789
@item
790
When converting video files, you can use the '-sameq' option which
791
uses the same quality factor in the encoder as in the decoder.
792
It allows almost lossless encoding.
793

    
794
@end itemize
795
@c man end TIPS
796

    
797
@chapter Examples
798
@c man begin EXAMPLES
799

    
800
@section Video and Audio grabbing
801

    
802
FFmpeg can grab video and audio from devices given that you specify the input
803
format and device.
804

    
805
@example
806
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
807
@end example
808

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

    
815
@section X11 grabbing
816

    
817
FFmpeg can grab the X11 display.
818

    
819
@example
820
ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg
821
@end example
822

    
823
0.0 is display.screen number of your X11 server, same as
824
the DISPLAY environment variable.
825

    
826
@example
827
ffmpeg -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
828
@end example
829

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

    
833
@section Video and Audio file format conversion
834

    
835
* FFmpeg can use any supported file format and protocol as input:
836

    
837
Examples:
838

    
839
* You can use YUV files as input:
840

    
841
@example
842
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
843
@end example
844

    
845
It will use the files:
846
@example
847
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
848
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
849
@end example
850

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

    
856
* You can input from a raw YUV420P file:
857

    
858
@example
859
ffmpeg -i /tmp/test.yuv /tmp/out.avi
860
@end example
861

    
862
test.yuv is a file containing raw YUV planar data. Each frame is composed
863
of the Y plane followed by the U and V planes at half vertical and
864
horizontal resolution.
865

    
866
* You can output to a raw YUV420P file:
867

    
868
@example
869
ffmpeg -i mydivx.avi hugefile.yuv
870
@end example
871

    
872
* You can set several input files and output files:
873

    
874
@example
875
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
876
@end example
877

    
878
Converts the audio file a.wav and the raw YUV video file a.yuv
879
to MPEG file a.mpg.
880

    
881
* You can also do audio and video conversions at the same time:
882

    
883
@example
884
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
885
@end example
886

    
887
Converts a.wav to MPEG audio at 22050 Hz sample rate.
888

    
889
* You can encode to several formats at the same time and define a
890
mapping from input stream to output streams:
891

    
892
@example
893
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
894
@end example
895

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

    
900
* You can transcode decrypted VOBs:
901

    
902
@example
903
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
904
@end example
905

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

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

    
917
* You can extract images from a video, or create a video from many images:
918

    
919
For extracting images from a video:
920
@example
921
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
922
@end example
923

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

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

    
932
For creating a video from many images:
933
@example
934
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
935
@end example
936

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

    
942
* You can put many streams of the same type in the output:
943

    
944
@example
945
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
946
@end example
947

    
948
In addition to the first video and audio streams, the resulting
949
output file @file{test12.avi} will contain the second video
950
and the second audio stream found in the input streams list.
951

    
952
The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle}
953
options have to be specified immediately after the name of the output
954
file to which you want to add them.
955
@c man end EXAMPLES
956

    
957
@include indevs.texi
958
@include outdevs.texi
959
@include protocols.texi
960
@include filters.texi
961

    
962
@ignore
963

    
964
@setfilename ffmpeg
965
@settitle FFmpeg video converter
966

    
967
@c man begin SEEALSO
968
ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation
969
@c man end
970

    
971
@c man begin AUTHORS
972
The FFmpeg developers
973
@c man end
974

    
975
@end ignore
976

    
977
@bye