Statistics
| Branch: | Revision:

ffmpeg / doc / ffmpeg-doc.texi @ 8787d837

History | View | Annotate | Download (21.1 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 fmt
206
Force format.
207

    
208
@item -i filename
209
input filename
210

    
211
@item -y
212
Overwrite output files.
213

    
214
@item -t 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 limit_size
220
Set the file size limit.
221

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

    
226
@item -itsoffset 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 string
235
Set the title.
236

    
237
@item -timestamp time
238
Set the timestamp.
239

    
240
@item -author string
241
Set the author.
242

    
243
@item -copyright string
244
Set the copyright.
245

    
246
@item -comment string
247
Set the comment.
248

    
249
@item -album string
250
Set the album.
251

    
252
@item -track number
253
Set the track.
254

    
255
@item -year number
256
Set the year.
257

    
258
@item -v verbose
259
Control amount of logging.
260

    
261
@item -target 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 number
278
Set the number of data frames to record.
279

    
280
@item -scodec 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 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 bitrate
295
Set the video bitrate in bit/s (default = 200 kb/s).
296
@item -vframes number
297
Set the number of video frames to record.
298
@item -r fps
299
Set frame rate (Hz value, fraction or abbreviation), (default = 25).
300
@item -s 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 aspect
363
Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777).
364
@item -croptop size
365
Set top crop band size (in pixels).
366
@item -cropbottom size
367
Set bottom crop band size (in pixels).
368
@item -cropleft size
369
Set left crop band size (in pixels).
370
@item -cropright size
371
Set right crop band size (in pixels).
372
@item -padtop size
373
Set top pad band size (in pixels).
374
@item -padbottom size
375
Set bottom pad band size (in pixels).
376
@item -padleft size
377
Set left pad band size (in pixels).
378
@item -padright size
379
Set right pad band size (in pixels).
380
@item -padcolor (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 tolerance
388
Set video bitrate tolerance (in bit/s).
389
@item -maxrate bitrate
390
Set max video bitrate (in bit/s).
391
@item -minrate bitrate
392
Set min video bitrate (in bit/s).
393
@item -bufsize size
394
Set video buffer verifier buffer size (in bits).
395
@item -vcodec codec
396
Force video codec to @var{codec}. Use the @code{copy} special value to
397
tell that the raw codec data must be copied as is.
398
@item -sameq
399
Use same video quality as source (implies VBR).
400

    
401
@item -pass n
402
Select the pass number (1 or 2). It is useful to do two pass
403
encoding. The statistics of the video are recorded in the first
404
pass and the video is generated at the exact requested bitrate
405
in the second pass.
406

    
407
@item -passlogfile file
408
Set two pass logfile name to @var{file}.
409

    
410
@item -newvideo
411
Add a new video stream to the current output stream.
412

    
413
@end table
414

    
415
@section Advanced Video Options
416

    
417
@table @option
418
@item -pix_fmt format
419
Set pixel format. Use 'list' as parameter to show all the supported
420
pixel formats.
421
@item -sws_flags flags
422
Set SwScaler flags (only available when compiled with SwScaler support).
423
@item -g gop_size
424
Set the group of pictures size.
425
@item -intra
426
Use only intra frames.
427
@item -vdt n
428
Discard threshold.
429
@item -qscale q
430
Use fixed video quantizer scale (VBR).
431
@item -qmin q
432
minimum video quantizer scale (VBR)
433
@item -qmax q
434
maximum video quantizer scale (VBR)
435
@item -qdiff q
436
maximum difference between the quantizer scales (VBR)
437
@item -qblur blur
438
video quantizer scale blur (VBR)
439
@item -qcomp compression
440
video quantizer scale compression (VBR)
441

    
442
@item -lmin lambda
443
minimum video lagrange factor (VBR)
444
@item -lmax lambda
445
max video lagrange factor (VBR)
446
@item -mblmin lambda
447
minimum macroblock quantizer scale (VBR)
448
@item -mblmax lambda
449
maximum macroblock quantizer scale (VBR)
450

    
451
These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
452
but you may use the QP2LAMBDA constant to easily convert from 'q' units:
453
@example
454
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
455
@end example
456

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

    
489
@item -dct_algo algo
490
Set DCT algorithm to @var{algo}. Available values are:
491
@table @samp
492
@item 0
493
FF_DCT_AUTO (default)
494
@item 1
495
FF_DCT_FASTINT
496
@item 2
497
FF_DCT_INT
498
@item 3
499
FF_DCT_MMX
500
@item 4
501
FF_DCT_MLIB
502
@item 5
503
FF_DCT_ALTIVEC
504
@end table
505

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

    
533
@item -er n
534
Set error resilience to @var{n}.
535
@table @samp
536
@item 1
537
FF_ER_CAREFUL (default)
538
@item 2
539
FF_ER_COMPLIANT
540
@item 3
541
FF_ER_AGGRESSIVE
542
@item 4
543
FF_ER_VERY_AGGRESSIVE
544
@end table
545

    
546
@item -ec bit_mask
547
Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of
548
the following values:
549
@table @samp
550
@item 1
551
FF_EC_GUESS_MVS (default = enabled)
552
@item 2
553
FF_EC_DEBLOCK (default = enabled)
554
@end table
555

    
556
@item -bf frames
557
Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
558
@item -mbd mode
559
macroblock decision
560
@table @samp
561
@item 0
562
FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg).
563
@item 1
564
FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
565
@item 2
566
FF_MB_DECISION_RD: rate distortion
567
@end table
568

    
569
@item -4mv
570
Use four motion vector by macroblock (MPEG-4 only).
571
@item -part
572
Use data partitioning (MPEG-4 only).
573
@item -bug param
574
Work around encoder bugs that are not auto-detected.
575
@item -strict strictness
576
How strictly to follow the standards.
577
@item -aic
578
Enable Advanced intra coding (h263+).
579
@item -umv
580
Enable Unlimited Motion Vector (h263+)
581

    
582
@item -deinterlace
583
Deinterlace pictures.
584
@item -ilme
585
Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
586
Use this option if your input file is interlaced and you want
587
to keep the interlaced format for minimum losses.
588
The alternative is to deinterlace the input stream with
589
@option{-deinterlace}, but deinterlacing introduces losses.
590
@item -psnr
591
Calculate PSNR of compressed frames.
592
@item -vstats
593
Dump video coding statistics to @file{vstats_HHMMSS.log}.
594
@item -vstats_file file
595
Dump video coding statistics to @var{file}.
596
@item -vhook module
597
Insert video processing @var{module}. @var{module} contains the module
598
name and its parameters separated by spaces.
599
@item -top n
600
top=1/bottom=0/auto=-1 field first
601
@item -dc precision
602
Intra_dc_precision.
603
@item -vtag fourcc/tag
604
Force video tag/fourcc.
605
@item -qphist
606
Show QP histogram.
607
@item -vbsf bitstream filter
608
Bitstream filters available are "dump_extra", "remove_extra", "noise".
609
@end table
610

    
611
@section Audio Options
612

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

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

    
635
Example:
636
@example
637
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
638
@end example
639
@item -alang code
640
Set the ISO 639 language code (3 letters) of the current audio stream.
641
@end table
642

    
643
@section Advanced Audio options:
644

    
645
@table @option
646
@item -atag fourcc/tag
647
Force audio tag/fourcc.
648
@item -absf bitstream filter
649
Bitstream filters available are "dump_extra", "remove_extra", "noise", "mp3comp", "mp3decomp".
650
@end table
651

    
652
@section Subtitle options:
653

    
654
@table @option
655
@item -scodec codec
656
Force subtitle codec ('copy' to copy stream).
657
@item -newsubtitle
658
Add a new subtitle stream to the current output stream.
659
@item -slang code
660
Set the ISO 639 language code (3 letters) of the current subtitle stream.
661
@end table
662

    
663
@section Audio/Video grab options
664

    
665
@table @option
666
@item -vc channel
667
Set video grab channel (DV1394 only).
668
@item -tvstd standard
669
Set television standard (NTSC, PAL (SECAM)).
670
@item -isync
671
Synchronize read on input.
672
@end table
673

    
674
@section Advanced options
675

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

    
727
@node FFmpeg formula evaluator
728
@section FFmpeg formula evaluator
729

    
730
When evaluating a rate control string, FFmpeg uses an internal formula
731
evaluator.
732

    
733
The following binary operators are available: @code{+}, @code{-},
734
@code{*}, @code{/}, @code{^}.
735

    
736
The following unary operators are available: @code{+}, @code{-},
737
@code{(...)}.
738

    
739
The following functions are available:
740
@table @var
741
@item sinh(x)
742
@item cosh(x)
743
@item tanh(x)
744
@item sin(x)
745
@item cos(x)
746
@item tan(x)
747
@item exp(x)
748
@item log(x)
749
@item squish(x)
750
@item gauss(x)
751
@item abs(x)
752
@item max(x, y)
753
@item min(x, y)
754
@item gt(x, y)
755
@item lt(x, y)
756
@item eq(x, y)
757
@item bits2qp(bits)
758
@item qp2bits(qp)
759
@end table
760

    
761
The following constants are available:
762
@table @var
763
@item PI
764
@item E
765
@item iTex
766
@item pTex
767
@item tex
768
@item mv
769
@item fCode
770
@item iCount
771
@item mcVar
772
@item var
773
@item isI
774
@item isP
775
@item isB
776
@item avgQP
777
@item qComp
778
@item avgIITex
779
@item avgPITex
780
@item avgPPTex
781
@item avgBPTex
782
@item avgTex
783
@end table
784

    
785
@c man end
786

    
787
@ignore
788

    
789
@setfilename ffmpeg
790
@settitle FFmpeg video converter
791

    
792
@c man begin SEEALSO
793
ffserver(1), ffplay(1) and the HTML documentation of @file{ffmpeg}.
794
@c man end
795

    
796
@c man begin AUTHOR
797
Fabrice Bellard
798
@c man end
799

    
800
@end ignore
801

    
802
@section Protocols
803

    
804
The filename can be @file{-} to read from standard input or to write
805
to standard output.
806

    
807
FFmpeg also handles many protocols specified with an URL syntax.
808

    
809
Use 'ffmpeg -formats' to see a list of the supported protocols.
810

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

    
815
@chapter Tips
816

    
817
@itemize
818
@item For streaming at very low bitrate application, use a low frame rate
819
and a small GOP size. This is especially true for RealVideo where
820
the Linux player does not seem to be very fast, so it can miss
821
frames. An example is:
822

    
823
@example
824
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
825
@end example
826

    
827
@item  The parameter 'q' which is displayed while encoding is the current
828
quantizer. The value 1 indicates that a very good quality could
829
be achieved. The value 31 indicates the worst quality. If q=31 appears
830
too often, it means that the encoder cannot compress enough to meet
831
your bitrate. You must either increase the bitrate, decrease the
832
frame rate or decrease the frame size.
833

    
834
@item If your computer is not fast enough, you can speed up the
835
compression at the expense of the compression ratio. You can use
836
'-me zero' to speed up motion estimation, and '-intra' to disable
837
motion estimation completely (you have only I-frames, which means it
838
is about as good as JPEG compression).
839

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

    
843
@item To have a constant quality (but a variable bitrate), use the option
844
'-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst
845
quality).
846

    
847
@item When converting video files, you can use the '-sameq' option which
848
uses the same quality factor in the encoder as in the decoder.
849
It allows almost lossless encoding.
850

    
851
@end itemize
852

    
853
@bye