Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 3275ac6a

History | View | Annotate | Download (26.9 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 timestamp.
103

    
104
@item -metadata @var{key}=@var{value}
105
Set a metadata key/value pair.
106

    
107
For example, for setting the title in the output file:
108
@example
109
ffmpeg -i in.avi -metadata title="my title" out.flv
110
@end example
111

    
112
@item -v @var{number}
113
Set the logging verbosity level.
114

    
115
@item -target @var{type}
116
Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd",
117
"ntsc-svcd", ... ). All the format options (bitrate, codecs,
118
buffer sizes) are then set automatically. You can just type:
119

    
120
@example
121
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
122
@end example
123

    
124
Nevertheless you can specify additional options as long as you know
125
they do not conflict with the standard, as in:
126

    
127
@example
128
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
129
@end example
130

    
131
@item -dframes @var{number}
132
Set the number of data frames to record.
133

    
134
@item -scodec @var{codec}
135
Force subtitle codec ('copy' to copy stream).
136

    
137
@item -newsubtitle
138
Add a new subtitle stream to the current output stream.
139

    
140
@item -slang @var{code}
141
Set the ISO 639 language code (3 letters) of the current subtitle stream.
142

    
143
@end table
144

    
145
@section Video Options
146

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

    
218
@item -aspect @var{aspect}
219
Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).
220
@item -croptop @var{size}
221
Set top crop band size (in pixels).
222
@item -cropbottom @var{size}
223
Set bottom crop band size (in pixels).
224
@item -cropleft @var{size}
225
Set left crop band size (in pixels).
226
@item -cropright @var{size}
227
Set right crop band size (in pixels).
228
@item -padtop @var{size}
229
Set top pad band size (in pixels).
230
@item -padbottom @var{size}
231
Set bottom pad band size (in pixels).
232
@item -padleft @var{size}
233
Set left pad band size (in pixels).
234
@item -padright @var{size}
235
Set right pad band size (in pixels).
236
@item -padcolor @var{hex_color}
237
Set color of padded bands. The value for padcolor is expressed
238
as a six digit hexadecimal number where the first two digits
239
represent red, the middle two digits green and last two digits
240
blue (default = 000000 (black)).
241
@item -vn
242
Disable video recording.
243
@item -bt @var{tolerance}
244
Set video bitrate tolerance (in bits, default 4000k).
245
Has a minimum value of: (target_bitrate/target_framerate).
246
In 1-pass mode, bitrate tolerance specifies how far ratecontrol is
247
willing to deviate from the target average bitrate value. This is
248
not related to min/max bitrate. Lowering tolerance too much has
249
an adverse effect on quality.
250
@item -maxrate @var{bitrate}
251
Set max video bitrate (in bit/s).
252
Requires -bufsize to be set.
253
@item -minrate @var{bitrate}
254
Set min video bitrate (in bit/s).
255
Most useful in setting up a CBR encode:
256
@example
257
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
258
@end example
259
It is of little use elsewise.
260
@item -bufsize @var{size}
261
Set video buffer verifier buffer size (in bits).
262
@item -vcodec @var{codec}
263
Force video codec to @var{codec}. Use the @code{copy} special value to
264
tell that the raw codec data must be copied as is.
265
@item -sameq
266
Use same video quality as source (implies VBR).
267

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

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

    
287
@item -newvideo
288
Add a new video stream to the current output stream.
289

    
290
@item -vlang @var{code}
291
Set the ISO 639 language code (3 letters) of the current video stream.
292

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

    
299
@end table
300

    
301
@section Advanced Video Options
302

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

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

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

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

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

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

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

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

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

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

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

    
498
@section Audio Options
499

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

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

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

    
532
@section Advanced Audio options:
533

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

    
541
@section Subtitle options:
542

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

    
559
@section Audio/Video grab options
560

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

    
570
@section Advanced options
571

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

    
614
With -map you can select from
615
which stream the timestamps should be taken. You can leave either video or
616
audio unchanged and sync the remaining stream(s) to the unchanged one.
617
@item -async @var{samples_per_second}
618
Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
619
the parameter is the maximum samples per second by which the audio is changed.
620
-async 1 is a special case where only the start of the audio stream is corrected
621
without any later correction.
622
@item -copyts
623
Copy timestamps from input to output.
624
@item -shortest
625
Finish encoding when the shortest input stream ends.
626
@item -dts_delta_threshold
627
Timestamp discontinuity delta threshold.
628
@item -muxdelay @var{seconds}
629
Set the maximum demux-decode delay.
630
@item -muxpreload @var{seconds}
631
Set the initial demux-decode delay.
632
@end table
633

    
634
@section Preset files
635

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

    
642
Preset files are specified with the @code{vpre}, @code{apre},
643
@code{spre}, and @code{fpre} options. The @code{fpre} option takes the
644
filename of the preset instead of a preset name as input and can be
645
used for any kind of codec. For the @code{vpre}, @code{apre}, and
646
@code{spre} options, the options specified in a preset file are
647
applied to the currently selected codec of the same type as the preset
648
option.
649

    
650
The argument passed to the @code{vpre}, @code{apre}, and @code{spre}
651
preset options identifies the preset file to use according to the
652
following rules:
653

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

    
660
If no such file is found, then ffmpeg will search for a file named
661
@var{codec_name}-@var{arg}.ffpreset in the above-mentioned
662
directories, where @var{codec_name} is the name of the codec to which
663
the preset file options will be applied. For example, if you select
664
the video codec with @code{-vcodec libx264} and use @code{-vpre max},
665
then it will search for the file @file{libx264-max.ffpreset}.
666

    
667
@anchor{FFmpeg formula evaluator}
668
@section FFmpeg formula evaluator
669

    
670
When evaluating a rate control string, FFmpeg uses an internal formula
671
evaluator.
672

    
673
The following binary operators are available: @code{+}, @code{-},
674
@code{*}, @code{/}, @code{^}.
675

    
676
The following unary operators are available: @code{+}, @code{-},
677
@code{(...)}.
678

    
679
The following statements are available: @code{ld}, @code{st},
680
@code{while}.
681

    
682
The following functions are available:
683
@table @var
684
@item sinh(x)
685
@item cosh(x)
686
@item tanh(x)
687
@item sin(x)
688
@item cos(x)
689
@item tan(x)
690
@item atan(x)
691
@item asin(x)
692
@item acos(x)
693
@item exp(x)
694
@item log(x)
695
@item abs(x)
696
@item squish(x)
697
@item gauss(x)
698
@item mod(x, y)
699
@item max(x, y)
700
@item min(x, y)
701
@item eq(x, y)
702
@item gte(x, y)
703
@item gt(x, y)
704
@item lte(x, y)
705
@item lt(x, y)
706
@item bits2qp(bits)
707
@item qp2bits(qp)
708
@end table
709

    
710
The following constants are available:
711
@table @var
712
@item PI
713
@item E
714
@item iTex
715
@item pTex
716
@item tex
717
@item mv
718
@item fCode
719
@item iCount
720
@item mcVar
721
@item var
722
@item isI
723
@item isP
724
@item isB
725
@item avgQP
726
@item qComp
727
@item avgIITex
728
@item avgPITex
729
@item avgPPTex
730
@item avgBPTex
731
@item avgTex
732
@end table
733

    
734
@c man end
735

    
736
@section Protocols
737

    
738
The file name can be @file{-} to read from standard input or to write
739
to standard output.
740

    
741
FFmpeg also handles many protocols specified with an URL syntax.
742

    
743
Use 'ffmpeg -protocols' to see a list of the supported protocols.
744

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

    
749
@chapter Tips
750
@c man begin TIPS
751

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

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

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

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

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

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

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

    
792
@end itemize
793
@c man end TIPS
794

    
795
@chapter Examples
796
@c man begin EXAMPLES
797

    
798
@section Video and Audio grabbing
799

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

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

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

    
813
@section X11 grabbing
814

    
815
FFmpeg can grab the X11 display.
816

    
817
@example
818
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg
819
@end example
820

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

    
824
@example
825
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg
826
@end example
827

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

    
831
@section Video and Audio file format conversion
832

    
833
* FFmpeg can use any supported file format and protocol as input:
834

    
835
Examples:
836

    
837
* You can use YUV files as input:
838

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

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

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

    
854
* You can input from a raw YUV420P file:
855

    
856
@example
857
ffmpeg -i /tmp/test.yuv /tmp/out.avi
858
@end example
859

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

    
864
* You can output to a raw YUV420P file:
865

    
866
@example
867
ffmpeg -i mydivx.avi hugefile.yuv
868
@end example
869

    
870
* You can set several input files and output files:
871

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

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

    
879
* You can also do audio and video conversions at the same time:
880

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

    
885
Converts a.wav to MPEG audio at 22050 Hz sample rate.
886

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

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

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

    
898
* You can transcode decrypted VOBs:
899

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

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

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

    
915
* You can extract images from a video, or create a video from many images:
916

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

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

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

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

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

    
940
* You can put many streams of the same type in the output:
941

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

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

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

    
955
@include filters.texi
956

    
957
@ignore
958

    
959
@setfilename ffmpeg
960
@settitle FFmpeg video converter
961

    
962
@c man begin SEEALSO
963
ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation
964
@c man end
965

    
966
@c man begin AUTHORS
967
The FFmpeg developers
968
@c man end
969

    
970
@end ignore
971

    
972
@bye