Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 3a9b190c

History | View | Annotate | Download (22.3 KB)

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

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

    
10

    
11
@chapter Introduction
12

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

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

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

    
24
@chapter Quick Start
25

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

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

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

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

    
42
@section X11 grabbing
43

    
44
FFmpeg can grab the X11 display.
45

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

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

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

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

    
60
@section Video and Audio file format conversion
61

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

    
64
Examples:
65

    
66
* You can use YUV files as input:
67

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
127
* You can transcode decrypted VOBs:
128

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

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

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

    
145
@chapter Invocation
146

    
147
@section Syntax
148

    
149
The generic syntax is:
150

    
151
@example
152
@c man begin SYNOPSIS
153
ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}...
154
@c man end
155
@end example
156
@c man begin DESCRIPTION
157
As a general rule, options are applied to the next specified
158
file. Therefore, order is important, and you can have the same
159
option on the command line multiple times. Each occurrence is
160
then applied to the next input or output file.
161

    
162
* To set the video bitrate of the output file to 64kbit/s:
163
@example
164
ffmpeg -i input.avi -b 64k output.avi
165
@end example
166

    
167
* To force the frame rate of the input and output file to 24 fps:
168
@example
169
ffmpeg -r 24 -i input.avi output.avi
170
@end example
171

    
172
* To force the frame rate of the output file to 24 fps:
173
@example
174
ffmpeg -i input.avi -r 24 output.avi
175
@end example
176

    
177
* To force the frame rate of input file to 1 fps and the output file to 24 fps:
178
@example
179
ffmpeg -r 1 -i input.avi -r 24 output.avi
180
@end example
181

    
182
The format option may be needed for raw input files.
183

    
184
By default, FFmpeg tries to convert as losslessly as possible: It
185
uses the same audio and video parameters for the outputs as the one
186
specified for the inputs.
187
@c man end
188

    
189
@c man begin OPTIONS
190
@section Main options
191

    
192
@table @option
193
@item -L
194
Show license.
195

    
196
@item -h
197
Show help.
198

    
199
@item -version
200
Show version.
201

    
202
@item -formats
203
Show available formats, codecs, protocols, ...
204

    
205
@item -f @var{fmt}
206
Force format.
207

    
208
@item -i @var{filename}
209
input file name
210

    
211
@item -y
212
Overwrite output files.
213

    
214
@item -t @var{duration}
215
Restrict the transcoded/captured video sequence
216
to the duration specified in seconds.
217
@code{hh:mm:ss[.xxx]} syntax is also supported.
218

    
219
@item -fs @var{limit_size}
220
Set the file size limit.
221

    
222
@item -ss @var{position}
223
Seek to given time position in seconds.
224
@code{hh:mm:ss[.xxx]} syntax is also supported.
225

    
226
@item -itsoffset @var{offset}
227
Set the input time offset in seconds.
228
@code{[-]hh:mm:ss[.xxx]} syntax is also supported.
229
This option affects all the input files that follow it.
230
The offset is added to the timestamps of the input files.
231
Specifying a positive offset means that the corresponding
232
streams are delayed by 'offset' seconds.
233

    
234
@item -title @var{string}
235
Set the title.
236

    
237
@item -timestamp @var{time}
238
Set the timestamp.
239

    
240
@item -author @var{string}
241
Set the author.
242

    
243
@item -copyright @var{string}
244
Set the copyright.
245

    
246
@item -comment @var{string}
247
Set the comment.
248

    
249
@item -album @var{string}
250
Set the album.
251

    
252
@item -track @var{number}
253
Set the track.
254

    
255
@item -year @var{number}
256
Set the year.
257

    
258
@item -v @var{number}
259
Set the logging verbosity level.
260

    
261
@item -target @var{type}
262
Specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd",
263
"ntsc-svcd", ... ). All the format options (bitrate, codecs,
264
buffer sizes) are then set automatically. You can just type:
265

    
266
@example
267
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
268
@end example
269

    
270
Nevertheless you can specify additional options as long as you know
271
they do not conflict with the standard, as in:
272

    
273
@example
274
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
275
@end example
276

    
277
@item -dframes @var{number}
278
Set the number of data frames to record.
279

    
280
@item -scodec @var{codec}
281
Force subtitle codec ('copy' to copy stream).
282

    
283
@item -newsubtitle
284
Add a new subtitle stream to the current output stream.
285

    
286
@item -slang @var{code}
287
Set the ISO 639 language code (3 letters) of the current subtitle stream.
288

    
289
@end table
290

    
291
@section Video Options
292

    
293
@table @option
294
@item -b @var{bitrate}
295
Set the video bitrate in bit/s (default = 200 kb/s).
296
@item -vframes @var{number}
297
Set the number of video frames to record.
298
@item -r @var{fps}
299
Set frame rate (Hz value, fraction or abbreviation), (default = 25).
300
@item -s @var{size}
301
Set frame size. The format is @samp{wxh} (ffserver default = 160x128, ffmpeg default = same as source).
302
The following abbreviations are recognized:
303
@table @samp
304
@item sqcif
305
128x96
306
@item qcif
307
176x144
308
@item cif
309
352x288
310
@item 4cif
311
704x576
312
@item qqvga
313
160x120
314
@item qvga
315
320x240
316
@item vga
317
640x480
318
@item svga
319
800x600
320
@item xga
321
1024x768
322
@item uxga
323
1600x1200
324
@item qxga
325
2048x1536
326
@item sxga
327
1280x1024
328
@item qsxga
329
2560x2048
330
@item hsxga
331
5120x4096
332
@item wvga
333
852x480
334
@item wxga
335
1366x768
336
@item wsxga
337
1600x1024
338
@item wuxga
339
1920x1200
340
@item woxga
341
2560x1600
342
@item wqsxga
343
3200x2048
344
@item wquxga
345
3840x2400
346
@item whsxga
347
6400x4096
348
@item whuxga
349
7680x4800
350
@item cga
351
320x200
352
@item ega
353
640x350
354
@item hd480
355
852x480
356
@item hd720
357
1280x720
358
@item hd1080
359
1920x1080
360
@end table
361

    
362
@item -aspect @var{aspect}
363
Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).
364
@item -croptop @var{size}
365
Set top crop band size (in pixels).
366
@item -cropbottom @var{size}
367
Set bottom crop band size (in pixels).
368
@item -cropleft @var{size}
369
Set left crop band size (in pixels).
370
@item -cropright @var{size}
371
Set right crop band size (in pixels).
372
@item -padtop @var{size}
373
Set top pad band size (in pixels).
374
@item -padbottom @var{size}
375
Set bottom pad band size (in pixels).
376
@item -padleft @var{size}
377
Set left pad band size (in pixels).
378
@item -padright @var{size}
379
Set right pad band size (in pixels).
380
@item -padcolor @var{hex_color}
381
Set color of padded bands. The value for padcolor is expressed
382
as a six digit hexadecimal number where the first two digits
383
represent red, the middle two digits green and last two digits
384
blue (default = 000000 (black)).
385
@item -vn
386
Disable video recording.
387
@item -bt @var{tolerance}
388
Set video bitrate tolerance (in bit/s).
389
@item -maxrate @var{bitrate}
390
Set max video bitrate (in bit/s).
391
Requires -bufsize to be set.
392
@item -minrate @var{bitrate}
393
Set min video bitrate (in bit/s).
394
Most useful in setting up a CBR encode:
395
@example
396
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
397
@end example
398
It is of little use elsewise.
399
@item -bufsize @var{size}
400
Set video buffer verifier buffer size (in bits).
401
@item -vcodec @var{codec}
402
Force video codec to @var{codec}. Use the @code{copy} special value to
403
tell that the raw codec data must be copied as is.
404
@item -sameq
405
Use same video quality as source (implies VBR).
406

    
407
@item -pass @var{n}
408
Select the pass number (1 or 2). It is useful to do two pass
409
encoding. The statistics of the video are recorded in the first
410
pass and the video is generated at the exact requested bitrate
411
in the second pass.
412

    
413
@item -passlogfile @var{file}
414
Set two pass logfile name to @var{file}.
415

    
416
@item -newvideo
417
Add a new video stream to the current output stream.
418

    
419
@end table
420

    
421
@section Advanced Video Options
422

    
423
@table @option
424
@item -pix_fmt @var{format}
425
Set pixel format. Use 'list' as parameter to show all the supported
426
pixel formats.
427
@item -sws_flags @var{flags}
428
Set SwScaler flags (only available when compiled with swscale support).
429
@item -g @var{gop_size}
430
Set the group of pictures size.
431
@item -intra
432
Use only intra frames.
433
@item -vdt @var{n}
434
Discard threshold.
435
@item -qscale @var{q}
436
Use fixed video quantizer scale (VBR).
437
@item -qmin @var{q}
438
minimum video quantizer scale (VBR)
439
@item -qmax @var{q}
440
maximum video quantizer scale (VBR)
441
@item -qdiff @var{q}
442
maximum difference between the quantizer scales (VBR)
443
@item -qblur @var{blur}
444
video quantizer scale blur (VBR) (range 0.0 - 1.0)
445
@item -qcomp @var{compression}
446
video quantizer scale compression (VBR) (default 0.5).
447
Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0
448

    
449
@item -lmin @var{lambda}
450
minimum video lagrange factor (VBR)
451
@item -lmax @var{lambda}
452
max video lagrange factor (VBR)
453
@item -mblmin @var{lambda}
454
minimum macroblock quantizer scale (VBR)
455
@item -mblmax @var{lambda}
456
maximum macroblock quantizer scale (VBR)
457

    
458
These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
459
but you may use the QP2LAMBDA constant to easily convert from 'q' units:
460
@example
461
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
462
@end example
463

    
464
@item -rc_init_cplx @var{complexity}
465
initial complexity for single pass encoding
466
@item -b_qfactor @var{factor}
467
qp factor between P- and B-frames
468
@item -i_qfactor @var{factor}
469
qp factor between P- and I-frames
470
@item -b_qoffset @var{offset}
471
qp offset between P- and B-frames
472
@item -i_qoffset @var{offset}
473
qp offset between P- and I-frames
474
@item -rc_eq @var{equation}
475
Set rate control equation (@pxref{FFmpeg formula
476
evaluator}) (default = @code{tex^qComp}).
477
@item -rc_override @var{override}
478
rate control override for specific intervals
479
@item -me_method @var{method}
480
Set motion estimation method to @var{method}.
481
Available methods are (from lowest to best quality):
482
@table @samp
483
@item zero
484
Try just the (0, 0) vector.
485
@item phods
486
@item log
487
@item x1
488
@item hex
489
@item umh
490
@item epzs
491
(default method)
492
@item full
493
exhaustive search (slow and marginally better than epzs)
494
@end table
495

    
496
@item -dct_algo @var{algo}
497
Set DCT algorithm to @var{algo}. Available values are:
498
@table @samp
499
@item 0
500
FF_DCT_AUTO (default)
501
@item 1
502
FF_DCT_FASTINT
503
@item 2
504
FF_DCT_INT
505
@item 3
506
FF_DCT_MMX
507
@item 4
508
FF_DCT_MLIB
509
@item 5
510
FF_DCT_ALTIVEC
511
@end table
512

    
513
@item -idct_algo @var{algo}
514
Set IDCT algorithm to @var{algo}. Available values are:
515
@table @samp
516
@item 0
517
FF_IDCT_AUTO (default)
518
@item 1
519
FF_IDCT_INT
520
@item 2
521
FF_IDCT_SIMPLE
522
@item 3
523
FF_IDCT_SIMPLEMMX
524
@item 4
525
FF_IDCT_LIBMPEG2MMX
526
@item 5
527
FF_IDCT_PS2
528
@item 6
529
FF_IDCT_MLIB
530
@item 7
531
FF_IDCT_ARM
532
@item 8
533
FF_IDCT_ALTIVEC
534
@item 9
535
FF_IDCT_SH4
536
@item 10
537
FF_IDCT_SIMPLEARM
538
@end table
539

    
540
@item -er @var{n}
541
Set error resilience to @var{n}.
542
@table @samp
543
@item 1
544
FF_ER_CAREFUL (default)
545
@item 2
546
FF_ER_COMPLIANT
547
@item 3
548
FF_ER_AGGRESSIVE
549
@item 4
550
FF_ER_VERY_AGGRESSIVE
551
@end table
552

    
553
@item -ec @var{bit_mask}
554
Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
555
the following values:
556
@table @samp
557
@item 1
558
FF_EC_GUESS_MVS (default = enabled)
559
@item 2
560
FF_EC_DEBLOCK (default = enabled)
561
@end table
562

    
563
@item -bf @var{frames}
564
Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
565
@item -mbd @var{mode}
566
macroblock decision
567
@table @samp
568
@item 0
569
FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg).
570
@item 1
571
FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
572
@item 2
573
FF_MB_DECISION_RD: rate distortion
574
@end table
575

    
576
@item -4mv
577
Use four motion vector by macroblock (MPEG-4 only).
578
@item -part
579
Use data partitioning (MPEG-4 only).
580
@item -bug @var{param}
581
Work around encoder bugs that are not auto-detected.
582
@item -strict @var{strictness}
583
How strictly to follow the standards.
584
@item -aic
585
Enable Advanced intra coding (h263+).
586
@item -umv
587
Enable Unlimited Motion Vector (h263+)
588

    
589
@item -deinterlace
590
Deinterlace pictures.
591
@item -ilme
592
Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
593
Use this option if your input file is interlaced and you want
594
to keep the interlaced format for minimum losses.
595
The alternative is to deinterlace the input stream with
596
@option{-deinterlace}, but deinterlacing introduces losses.
597
@item -psnr
598
Calculate PSNR of compressed frames.
599
@item -vstats
600
Dump video coding statistics to @file{vstats_HHMMSS.log}.
601
@item -vstats_file @var{file}
602
Dump video coding statistics to @var{file}.
603
@item -vhook @var{module}
604
Insert video processing @var{module}. @var{module} contains the module
605
name and its parameters separated by spaces.
606
@item -top @var{n}
607
top=1/bottom=0/auto=-1 field first
608
@item -dc @var{precision}
609
Intra_dc_precision.
610
@item -vtag @var{fourcc/tag}
611
Force video tag/fourcc.
612
@item -qphist
613
Show QP histogram.
614
@item -vbsf @var{bitstream_filter}
615
Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump".
616
@example
617
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
618
@end example
619
@end table
620

    
621
@section Audio Options
622

    
623
@table @option
624
@item -aframes @var{number}
625
Set the number of audio frames to record.
626
@item -ar @var{freq}
627
Set the audio sampling frequency (default = 44100 Hz).
628
@item -ab @var{bitrate}
629
Set the audio bitrate in bit/s (default = 64k).
630
@item -ac @var{channels}
631
Set the number of audio channels (default = 1).
632
@item -an
633
Disable audio recording.
634
@item -acodec @var{codec}
635
Force audio codec to @var{codec}. Use the @code{copy} special value to
636
specify that the raw codec data must be copied as is.
637
@item -newaudio
638
Add a new audio track to the output file. If you want to specify parameters,
639
do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..).
640

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

    
645
Example:
646
@example
647
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
648
@end example
649
@item -alang @var{code}
650
Set the ISO 639 language code (3 letters) of the current audio stream.
651
@end table
652

    
653
@section Advanced Audio options:
654

    
655
@table @option
656
@item -atag @var{fourcc/tag}
657
Force audio tag/fourcc.
658
@item -absf @var{bitstream_filter}
659
Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
660
@end table
661

    
662
@section Subtitle options:
663

    
664
@table @option
665
@item -scodec @var{codec}
666
Force subtitle codec ('copy' to copy stream).
667
@item -newsubtitle
668
Add a new subtitle stream to the current output stream.
669
@item -slang @var{code}
670
Set the ISO 639 language code (3 letters) of the current subtitle stream.
671
@item -sbsf @var{bitstream_filter}
672
Bitstream filters available are "mov2textsub", "text2movsub".
673
@example
674
ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt
675
@end example
676
@end table
677

    
678
@section Audio/Video grab options
679

    
680
@table @option
681
@item -vc @var{channel}
682
Set video grab channel (DV1394 only).
683
@item -tvstd @var{standard}
684
Set television standard (NTSC, PAL (SECAM)).
685
@item -isync
686
Synchronize read on input.
687
@end table
688

    
689
@section Advanced options
690

    
691
@table @option
692
@item -map input stream id[:input stream id]
693
Set stream mapping from input streams to output streams.
694
Just enumerate the input streams in the order you want them in the output.
695
[input stream id] sets the (input) stream to sync against.
696
@item -map_meta_data @var{outfile}:@var{infile}
697
Set meta data information of @var{outfile} from @var{infile}.
698
@item -debug
699
Print specific debug info.
700
@item -benchmark
701
Add timings for benchmarking.
702
@item -dump
703
Dump each input packet.
704
@item -hex
705
When dumping packets, also dump the payload.
706
@item -bitexact
707
Only use bit exact algorithms (for codec testing).
708
@item -ps @var{size}
709
Set packet size in bits.
710
@item -re
711
Read input at native frame rate. Mainly used to simulate a grab device.
712
@item -loop_input
713
Loop over the input stream. Currently it works only for image
714
streams. This option is used for automatic FFserver testing.
715
@item -loop_output @var{number_of_times}
716
Repeatedly loop output for formats that support looping such as animated GIF
717
(0 will loop the output infinitely).
718
@item -threads @var{count}
719
Thread count.
720
@item -vsync @var{parameter}
721
Video sync method. Video will be stretched/squeezed to match the timestamps,
722
it is done by duplicating and dropping frames. With -map you can select from
723
which stream the timestamps should be taken. You can leave either video or
724
audio unchanged and sync the remaining stream(s) to the unchanged one.
725
@item -async @var{samples_per_second}
726
Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
727
the parameter is the maximum samples per second by which the audio is changed.
728
-async 1 is a special case where only the start of the audio stream is corrected
729
without any later correction.
730
@item -copyts
731
Copy timestamps from input to output.
732
@item -shortest
733
Finish encoding when the shortest input stream ends.
734
@item -dts_delta_threshold
735
Timestamp discontinuity delta threshold.
736
@item -muxdelay @var{seconds}
737
Set the maximum demux-decode delay.
738
@item -muxpreload @var{seconds}
739
Set the initial demux-decode delay.
740
@end table
741

    
742
@node FFmpeg formula evaluator
743
@section FFmpeg formula evaluator
744

    
745
When evaluating a rate control string, FFmpeg uses an internal formula
746
evaluator.
747

    
748
The following binary operators are available: @code{+}, @code{-},
749
@code{*}, @code{/}, @code{^}.
750

    
751
The following unary operators are available: @code{+}, @code{-},
752
@code{(...)}.
753

    
754
The following functions are available:
755
@table @var
756
@item sinh(x)
757
@item cosh(x)
758
@item tanh(x)
759
@item sin(x)
760
@item cos(x)
761
@item tan(x)
762
@item exp(x)
763
@item log(x)
764
@item squish(x)
765
@item gauss(x)
766
@item abs(x)
767
@item max(x, y)
768
@item min(x, y)
769
@item gt(x, y)
770
@item lt(x, y)
771
@item eq(x, y)
772
@item bits2qp(bits)
773
@item qp2bits(qp)
774
@end table
775

    
776
The following constants are available:
777
@table @var
778
@item PI
779
@item E
780
@item iTex
781
@item pTex
782
@item tex
783
@item mv
784
@item fCode
785
@item iCount
786
@item mcVar
787
@item var
788
@item isI
789
@item isP
790
@item isB
791
@item avgQP
792
@item qComp
793
@item avgIITex
794
@item avgPITex
795
@item avgPPTex
796
@item avgBPTex
797
@item avgTex
798
@end table
799

    
800
@c man end
801

    
802
@ignore
803

    
804
@setfilename ffmpeg
805
@settitle FFmpeg video converter
806

    
807
@c man begin SEEALSO
808
ffserver(1), ffplay(1) and the HTML documentation of @file{ffmpeg}.
809
@c man end
810

    
811
@c man begin AUTHOR
812
Fabrice Bellard
813
@c man end
814

    
815
@end ignore
816

    
817
@section Protocols
818

    
819
The file name can be @file{-} to read from standard input or to write
820
to standard output.
821

    
822
FFmpeg also handles many protocols specified with an URL syntax.
823

    
824
Use 'ffmpeg -formats' to see a list of the supported protocols.
825

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

    
830
@chapter Tips
831

    
832
@itemize
833
@item For streaming at very low bitrate application, use a low frame rate
834
and a small GOP size. This is especially true for RealVideo where
835
the Linux player does not seem to be very fast, so it can miss
836
frames. An example is:
837

    
838
@example
839
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
840
@end example
841

    
842
@item  The parameter 'q' which is displayed while encoding is the current
843
quantizer. The value 1 indicates that a very good quality could
844
be achieved. The value 31 indicates the worst quality. If q=31 appears
845
too often, it means that the encoder cannot compress enough to meet
846
your bitrate. You must either increase the bitrate, decrease the
847
frame rate or decrease the frame size.
848

    
849
@item If your computer is not fast enough, you can speed up the
850
compression at the expense of the compression ratio. You can use
851
'-me zero' to speed up motion estimation, and '-intra' to disable
852
motion estimation completely (you have only I-frames, which means it
853
is about as good as JPEG compression).
854

    
855
@item To have very low audio bitrates, reduce the sampling frequency
856
(down to 22050 kHz for MPEG audio, 22050 or 11025 for AC3).
857

    
858
@item To have a constant quality (but a variable bitrate), use the option
859
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
860
quality).
861

    
862
@item When converting video files, you can use the '-sameq' option which
863
uses the same quality factor in the encoder as in the decoder.
864
It allows almost lossless encoding.
865

    
866
@end itemize
867

    
868
@bye