Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 6785e927

History | View | Annotate | Download (26.7 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
@end table
294

    
295
@section Advanced Video Options
296

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

    
323
@item -lmin @var{lambda}
324
minimum video lagrange factor (VBR)
325
@item -lmax @var{lambda}
326
max video lagrange factor (VBR)
327
@item -mblmin @var{lambda}
328
minimum macroblock quantizer scale (VBR)
329
@item -mblmax @var{lambda}
330
maximum macroblock quantizer scale (VBR)
331

    
332
These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
333
but you may use the QP2LAMBDA constant to easily convert from 'q' units:
334
@example
335
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
336
@end example
337

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

    
370
@item -dct_algo @var{algo}
371
Set DCT algorithm to @var{algo}. Available values are:
372
@table @samp
373
@item 0
374
FF_DCT_AUTO (default)
375
@item 1
376
FF_DCT_FASTINT
377
@item 2
378
FF_DCT_INT
379
@item 3
380
FF_DCT_MMX
381
@item 4
382
FF_DCT_MLIB
383
@item 5
384
FF_DCT_ALTIVEC
385
@end table
386

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

    
414
@item -er @var{n}
415
Set error resilience to @var{n}.
416
@table @samp
417
@item 1
418
FF_ER_CAREFUL (default)
419
@item 2
420
FF_ER_COMPLIANT
421
@item 3
422
FF_ER_AGGRESSIVE
423
@item 4
424
FF_ER_VERY_AGGRESSIVE
425
@end table
426

    
427
@item -ec @var{bit_mask}
428
Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
429
the following values:
430
@table @samp
431
@item 1
432
FF_EC_GUESS_MVS (default = enabled)
433
@item 2
434
FF_EC_DEBLOCK (default = enabled)
435
@end table
436

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

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

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

    
492
@section Audio Options
493

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

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

    
518
Example:
519
@example
520
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
521
@end example
522
@item -alang @var{code}
523
Set the ISO 639 language code (3 letters) of the current audio stream.
524
@end table
525

    
526
@section Advanced Audio options:
527

    
528
@table @option
529
@item -atag @var{fourcc/tag}
530
Force audio tag/fourcc.
531
@item -absf @var{bitstream_filter}
532
Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
533
@end table
534

    
535
@section Subtitle options:
536

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

    
553
@section Audio/Video grab options
554

    
555
@table @option
556
@item -vc @var{channel}
557
Set video grab channel (DV1394 only).
558
@item -tvstd @var{standard}
559
Set television standard (NTSC, PAL (SECAM)).
560
@item -isync
561
Synchronize read on input.
562
@end table
563

    
564
@section Advanced options
565

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

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

    
628
@section Preset files
629

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

    
636
Preset files are specified with the @code{vpre}, @code{apre},
637
@code{spre}, and @code{fpre} options. The @code{fpre} option takes the
638
filename of the preset instead of a preset name as input and can be
639
used for any kind of codec. For the @code{vpre}, @code{apre}, and
640
@code{spre} options, the options specified in a preset file are
641
applied to the currently selected codec of the same type as the preset
642
option.
643

    
644
The argument passed to the @code{vpre}, @code{apre}, and @code{spre}
645
preset options identifies the preset file to use according to the
646
following rules:
647

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

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

    
661
@anchor{FFmpeg formula evaluator}
662
@section FFmpeg formula evaluator
663

    
664
When evaluating a rate control string, FFmpeg uses an internal formula
665
evaluator.
666

    
667
The following binary operators are available: @code{+}, @code{-},
668
@code{*}, @code{/}, @code{^}.
669

    
670
The following unary operators are available: @code{+}, @code{-},
671
@code{(...)}.
672

    
673
The following statements are available: @code{ld}, @code{st},
674
@code{while}.
675

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

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

    
728
@c man end
729

    
730
@section Protocols
731

    
732
The file name can be @file{-} to read from standard input or to write
733
to standard output.
734

    
735
FFmpeg also handles many protocols specified with an URL syntax.
736

    
737
Use 'ffmpeg -protocols' to see a list of the supported protocols.
738

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

    
743
@chapter Tips
744
@c man begin TIPS
745

    
746
@itemize
747
@item
748
For streaming at very low bitrate application, use a low frame rate
749
and a small GOP size. This is especially true for RealVideo where
750
the Linux player does not seem to be very fast, so it can miss
751
frames. An example is:
752

    
753
@example
754
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
755
@end example
756

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

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

    
772
@item
773
To have very low audio bitrates, reduce the sampling frequency
774
(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
775

    
776
@item
777
To have a constant quality (but a variable bitrate), use the option
778
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
779
quality).
780

    
781
@item
782
When converting video files, you can use the '-sameq' option which
783
uses the same quality factor in the encoder as in the decoder.
784
It allows almost lossless encoding.
785

    
786
@end itemize
787
@c man end TIPS
788

    
789
@chapter Examples
790
@c man begin EXAMPLES
791

    
792
@section Video and Audio grabbing
793

    
794
FFmpeg can grab video and audio from devices given that you specify the input
795
format and device.
796

    
797
@example
798
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
799
@end example
800

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

    
807
@section X11 grabbing
808

    
809
FFmpeg can grab the X11 display.
810

    
811
@example
812
ffmpeg -f x11grab -s cif -i :0.0 /tmp/out.mpg
813
@end example
814

    
815
0.0 is display.screen number of your X11 server, same as
816
the DISPLAY environment variable.
817

    
818
@example
819
ffmpeg -f x11grab -s cif -i :0.0+10,20 /tmp/out.mpg
820
@end example
821

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

    
825
@section Video and Audio file format conversion
826

    
827
* FFmpeg can use any supported file format and protocol as input:
828

    
829
Examples:
830

    
831
* You can use YUV files as input:
832

    
833
@example
834
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
835
@end example
836

    
837
It will use the files:
838
@example
839
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
840
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
841
@end example
842

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

    
848
* You can input from a raw YUV420P file:
849

    
850
@example
851
ffmpeg -i /tmp/test.yuv /tmp/out.avi
852
@end example
853

    
854
test.yuv is a file containing raw YUV planar data. Each frame is composed
855
of the Y plane followed by the U and V planes at half vertical and
856
horizontal resolution.
857

    
858
* You can output to a raw YUV420P file:
859

    
860
@example
861
ffmpeg -i mydivx.avi hugefile.yuv
862
@end example
863

    
864
* You can set several input files and output files:
865

    
866
@example
867
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
868
@end example
869

    
870
Converts the audio file a.wav and the raw YUV video file a.yuv
871
to MPEG file a.mpg.
872

    
873
* You can also do audio and video conversions at the same time:
874

    
875
@example
876
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
877
@end example
878

    
879
Converts a.wav to MPEG audio at 22050 Hz sample rate.
880

    
881
* You can encode to several formats at the same time and define a
882
mapping from input stream to output streams:
883

    
884
@example
885
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
886
@end example
887

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

    
892
* You can transcode decrypted VOBs:
893

    
894
@example
895
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
896
@end example
897

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

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

    
909
* You can extract images from a video, or create a video from many images:
910

    
911
For extracting images from a video:
912
@example
913
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
914
@end example
915

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

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

    
924
For creating a video from many images:
925
@example
926
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
927
@end example
928

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

    
934
* You can put many streams of the same type in the output:
935

    
936
@example
937
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
938
@end example
939

    
940
In addition to the first video and audio streams, the resulting
941
output file @file{test12.avi} will contain the second video
942
and the second audio stream found in the input streams list.
943

    
944
The @code{-newvideo}, @code{-newaudio} and @code{-newsubtitle}
945
options have to be specified immediately after the name of the output
946
file to which you want to add them.
947
@c man end EXAMPLES
948

    
949
@ignore
950

    
951
@setfilename ffmpeg
952
@settitle FFmpeg video converter
953

    
954
@c man begin SEEALSO
955
ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation
956
@c man end
957

    
958
@c man begin AUTHORS
959
The FFmpeg developers
960
@c man end
961

    
962
@end ignore
963

    
964
@bye