mirror of
https://github.com/mpv-player/mpv
synced 2025-01-02 21:12:23 +00:00
Finally merged libavc-option.txt into the man page.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9623 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
af885100d3
commit
25b01160bc
@ -1772,7 +1772,7 @@ It's autodetected on MPEG files, but can't be autodetected on most AVI files.
|
||||
Flip image upside\-down.
|
||||
.TP
|
||||
.B \-lavdopts <option1:option2:...> (DEBUG CODE)
|
||||
If decoding with a codec from libavcodec, you can specify its parameters here.
|
||||
If decoding with libavcodec, you can specify its parameters here.
|
||||
|
||||
.I EXAMPLE:
|
||||
.PD 0
|
||||
@ -1826,14 +1826,24 @@ manually work around encoder bugs:
|
||||
.br
|
||||
8 (mpeg4): UMP4 (autodetected if fourcc==UMP4)
|
||||
.br
|
||||
16 (mpeg4): padding bug
|
||||
16 (mpeg4): padding bug (autodetected)
|
||||
.br
|
||||
32 (mpeg4): illegal vlc bug (autodetected per fourcc)
|
||||
.br
|
||||
64 (mpeg4): XVID and DIVX qpel bug (autodetected)
|
||||
64 (mpeg4): XVID and DIVX qpel bug (autodetected per fourcc/ver)
|
||||
.br
|
||||
128 (mpeg4): old standard qpel (autodetected per fourcc/ver)
|
||||
.br
|
||||
256 (mpeg4): another qpel bug (autodetected per fourcc/ver)
|
||||
.br
|
||||
512 (mpeg4): direct-qpel-blocksize bug (autodetected per fourcc/ver)
|
||||
.br
|
||||
1024 (mpeg4): edge padding bug (autodetected per fourcc/ver)
|
||||
.REss
|
||||
.IPs idct=<0\-99>
|
||||
(see lavcopts)
|
||||
For best decoding quality use the same idct algorithm for decoding and encoding.
|
||||
This may come at a price in accuracy, though.
|
||||
.IPs gray
|
||||
grayscale only decoding (a bit faster than with color)
|
||||
.RE
|
||||
@ -2203,7 +2213,7 @@ s: swap fields (exchange even & odd lines)
|
||||
.REss
|
||||
.IPs "field[=n]"
|
||||
Extracts a single field from interlaced image using stride arithmetic
|
||||
to avoid wasting cpu time. The optional argument n specifies whether
|
||||
to avoid wasting CPU time. The optional argument n specifies whether
|
||||
to extract the even or the odd field (depending on whether n is even
|
||||
or odd).
|
||||
.IPs "detc[=var1=value2:var2=value2:...]"
|
||||
@ -2216,7 +2226,7 @@ dr: Set the frame dropping mode. 0 (default) means don't drop frames
|
||||
to maintain fixed output framerate. 1 means always drop a frame when
|
||||
there have been no drops or telecine merges in the past 5 frames. 2
|
||||
means always maintain exact 5:4 input to output frame ratio. (Note:
|
||||
use mode 1 with mencoder!)
|
||||
use mode 1 with MEncoder!)
|
||||
.br
|
||||
am: Analysis mode. Available values are 0 (fixed pattern with initial
|
||||
frame number specified by fr=#) and 1 (agressive search for telecine
|
||||
@ -2232,8 +2242,8 @@ tr0, tr1, tr2, tr3: Threshold values to be used in certain modes.
|
||||
.REss
|
||||
.IPs "telecine[=start]"
|
||||
Apply 3:2 "telecine" process to increase framerate by 20%. This most
|
||||
likely will not work correctly with mplayer, but it can be used with
|
||||
"mencoder -fps 29.97 -ofps 29.97 -vop telecine". Both fps options are
|
||||
likely will not work correctly with mplayer, but it can be used
|
||||
with 'mencoder -fps 29.97 -ofps 29.97 -vop telecine'. Both fps options are
|
||||
essential! (A/V sync will break if they are wrong.) The optional start
|
||||
parameter tells the filter where in the telecine pattern to start
|
||||
(0-3).
|
||||
@ -2550,7 +2560,7 @@ variable bitrate method
|
||||
.br
|
||||
1: mt
|
||||
.br
|
||||
2: rh(default)
|
||||
2: rh (default)
|
||||
.br
|
||||
3: abr
|
||||
.br
|
||||
@ -2628,7 +2638,7 @@ print additional options and informations on presets settings.
|
||||
.
|
||||
.TP
|
||||
.B \-lavcopts <option1:option2:...>
|
||||
If encoding with a codec from libavcodec, you can specify its parameters
|
||||
If encoding with libavcodec, you can specify its parameters
|
||||
here.
|
||||
|
||||
.I EXAMPLE:
|
||||
@ -2661,11 +2671,25 @@ rv10: an old RealVideo codec
|
||||
mpeg1video: MPEG1 video :)
|
||||
.REss
|
||||
.IPs vqmin=<1\-31>
|
||||
minimum quantizer (pass\ 1/\:2) (default: 2)
|
||||
minimum quantizer (pass\ 1/\:2)
|
||||
.RSss
|
||||
1: Not recommended (much larger file, little quality difference and weird side
|
||||
effects: msmpeg4, h263 will be very low quality, ratecontrol will be confused
|
||||
resulting in lower quality and some decoders will not be able to decode it).
|
||||
.br
|
||||
2: Recommended for normal mpeg4/mpeg1video encoding (default).
|
||||
.br
|
||||
3: Recommended for h263(p)/msmpeg4. The reason for preferring 3 over 2 is that
|
||||
2 could lead to overflows (this will be fixed for h263(p) by changing the
|
||||
quantizer per MB in the future, msmpeg4 cannot be fixed as it does not support
|
||||
that)
|
||||
.REss
|
||||
.IPs vqscale=<1\-31>
|
||||
constant quantizer (selects fixed quantizer mode) (default: 0 (disabled))
|
||||
Constant quantizer /\: constant quality encoding (selects fixed quantizer mode).
|
||||
A lower value means better quality but larger files (default: 0 (disabled)).
|
||||
1 is not recommended (see \-vqmin for details).
|
||||
.IPs vqmax=<1\-31>
|
||||
maximum quantizer (pass\ 1/\:2) (default: 31)
|
||||
maximum quantizer (pass\ 1/\:2) 10\-31 should be a sane range (default: 31)
|
||||
.IPs mbqmin=<1\-31>
|
||||
minimum macroblock quantizer (pass\ 1/\:2) (default: 2)
|
||||
.IPs mbqmax=<1\-31>
|
||||
@ -2677,50 +2701,64 @@ maximum number of B frames between non B frames:
|
||||
.RSss
|
||||
0: no B frames (default)
|
||||
.br
|
||||
0\-2: sane range
|
||||
0\-2: sane range for MPEG4
|
||||
.REss
|
||||
.IPs vme=<0\-5>
|
||||
motion estimation method:
|
||||
.RSss
|
||||
0: none (very lq)
|
||||
0: none (very low quality)
|
||||
.br
|
||||
1: full (slow)
|
||||
.br
|
||||
2: log (lq)
|
||||
2: log (low quality)
|
||||
.br
|
||||
3: phods (lq)
|
||||
3: phods (low quality)
|
||||
.br
|
||||
4: EPZS (default)
|
||||
.br
|
||||
5: X1 (experimental)
|
||||
Note: 0\-3 currently ignores the amount of Bits spent, so quality may be low.
|
||||
.REss
|
||||
.IPs vhq\ \
|
||||
high quality mode, encode each macro block in all modes an choose the smallest
|
||||
(slow).
|
||||
(default: HQ disabled)
|
||||
high quality mode, encode each macro block in all modes and choose the best.
|
||||
This is slow but results in better quality and file size.
|
||||
(default: disabled)
|
||||
.IPs v4mv
|
||||
4 motion vectors per macroblock (slightly better quality).
|
||||
Allow 4 motion vectors per macroblock (slightly better quality).
|
||||
(default: disabled)
|
||||
.IPs keyint=<0\-300>
|
||||
interval between keyframes in frames.
|
||||
Larger numbers mean slightly smaller files, but less precise seeking, 0 means
|
||||
no key frames and values >300 aren't recommended.
|
||||
For a strict mpeg1/\:2/\:4 compliance this would have to be <=132.
|
||||
maximum interval between keyframes in frames.
|
||||
Keyframes are needed for seeking as seeking is only possible to a keyframe but
|
||||
keyframes need more space than other frames so larger numbers here mean
|
||||
slightly smaller files, but less precise seeking, 0 means no key frames.
|
||||
Values >300 are not recommended as the quality might be bad depending upon
|
||||
decoder, encoder and luck.
|
||||
For a strict MPEG1/\:2/\:4 compliance this would have to be <=132.
|
||||
(default: 250 or one key frame every ten seconds in a 25fps movie)
|
||||
.IPs vb_strategy=<0\-1>
|
||||
strategy to choose between I/\:P/\:B frames (pass\ 2):
|
||||
.RSss
|
||||
0: always use the maximum number of B frames (default)
|
||||
.br
|
||||
1: avoid B frames in high motion scenes (bitrate mispredictions)
|
||||
1: avoid B frames in high motion scenes (will cause bitrate misprediction)
|
||||
.REss
|
||||
.IPs vpass=<1\-2>
|
||||
Activates internal 2pass mode (default: disabled):
|
||||
Activates internal two pass mode, only specify if you wish to use two pass
|
||||
encoding (default: disabled).
|
||||
.RSss
|
||||
1: first pass
|
||||
.br
|
||||
2: second pass
|
||||
.REss
|
||||
.IPs
|
||||
Tip: Try to use constant quantizer mode for pass one (vqscale=<quantizer>).
|
||||
.br
|
||||
huffyuv:
|
||||
.RSss
|
||||
pass 1 saves statistics
|
||||
.br
|
||||
pass 2 encodes with an optimal Huffman table based upon pass 1 statistics.
|
||||
.REss
|
||||
.IPs aspect=<x/y>
|
||||
Store movie aspect internally, just like MPEG files.
|
||||
Much nicer solution than rescaling, because quality isn't decreased.
|
||||
@ -2743,7 +2781,7 @@ Bit <16001\-24000000>
|
||||
(default: 800)
|
||||
.REss
|
||||
.IPs vratetol=<value>
|
||||
approximated filesize tolerance in kbit.
|
||||
approximated filesize tolerance in kBit. 1000\-100000 is a sane range.
|
||||
(warning: 1kBit = 1000 Bits)
|
||||
(default: 8000)
|
||||
.IPs vrc_maxrate=<value>
|
||||
@ -2769,21 +2807,25 @@ I/\:B-Frame quantizer = P-Frame quantizer * v{b|i}_qfactor + v{b|i}_qoffset
|
||||
.br
|
||||
else
|
||||
.br
|
||||
do normal ratecontrol (dont lock to next P frame quantizer) and set
|
||||
q= -q * v{b|i}_qfactor + v{b|i}_qoffset
|
||||
do normal ratecontrol (dont lock to next P frame quantizer) and
|
||||
set q= -q * v{b|i}_qfactor + v{b|i}_qoffset
|
||||
.IPs
|
||||
Tip: To do constant quantizer encoding with different quantizers for
|
||||
I/P and B frames you can use:
|
||||
vqmin=<ip_quant>:vqmax=<ip_quant>:vb_qfactor=<b_quant/ip_quant>
|
||||
.IPs vqblur=<0.0\-1.0>
|
||||
quantizer blur (pass1):
|
||||
quantizer blur (pass1) Larger values will average the quantizer more over
|
||||
time (slower change).
|
||||
.RSss
|
||||
0.0: qblur disabled
|
||||
.br
|
||||
0.5 (default)
|
||||
.br
|
||||
1.0: average the quantizer over all previous frames, larger values will
|
||||
average the quantizer more over time (slower change)
|
||||
1.0: average the quantizer over all previous frames
|
||||
.REss
|
||||
.IPs vqblur=<0.0\-99.0>
|
||||
quantizer gaussian blur, larger values will average the quantizer more over
|
||||
time (slower change) (pass2) (default: 0.5)
|
||||
quantizer gaussian blur (pass2) Larger values will average the quantizer more
|
||||
over time (slower change) (default: 0.5)
|
||||
.IPs vqcomp=<value>
|
||||
quantizer compression, depends upon vrc_eq (pass\ 1/\:2) (default: 0.5)
|
||||
.IPs vrc_eq=<equation>
|
||||
@ -2808,19 +2850,19 @@ iTex,pTex: intra, non intra texture complexity
|
||||
.br
|
||||
avgTex: average texture complexity
|
||||
.br
|
||||
avgIITexaverage: intra texture complexity in I frames
|
||||
avgIITex: average intra texture complexity in I frames
|
||||
.br
|
||||
avgPITexaverage: intra texture complexity in P frames
|
||||
avgPITex: average intra texture complexity in P frames
|
||||
.br
|
||||
avgPPTexaverage: non intra texture complexity in P frames
|
||||
avgPPTex: average non intra texture complexity in P frames
|
||||
.br
|
||||
avgBPTexaverage: non intra texture complexity in B frames
|
||||
avgBPTex: average non intra texture complexity in B frames
|
||||
.br
|
||||
mv: bits used for MVs
|
||||
mv: Bits used for motion vectors
|
||||
.br
|
||||
fCode: maximum length of MV in log2 scale
|
||||
fCode: maximum length of motion vector in log2 scale
|
||||
.br
|
||||
iCount: number of intra MBs / number of MBs
|
||||
iCount: number of intra macro blocks / number of macro blocks
|
||||
.br
|
||||
var: spatial complexity
|
||||
.br
|
||||
@ -2845,28 +2887,27 @@ eq(a,b): is 1 if a==b, 0 otherwise
|
||||
sin, cos, tan, sinh, cosh, tanh, exp, log, abs
|
||||
.
|
||||
.IPs vrc_override=<options>
|
||||
User specified quality for specific parts (pass\ 1/\:2).
|
||||
The options are <start-frame, end-frame, quality[/\:start-frame, end-frame,
|
||||
quality[/...]]>:
|
||||
User specified quality for specific parts (ending, credits, ..) (pass\ 1/\:2).
|
||||
The options are <start-frame>, <end-frame>, <quality>[/\:<start-frame>,
|
||||
<end-frame>, <quality>[/...]]:
|
||||
.RSss
|
||||
quality 2\-31: quantizer
|
||||
.br
|
||||
quality \-500\-0: quality correcture in %
|
||||
quality \-500\-0: quality correction in %
|
||||
.REss
|
||||
.IPs vrc_init_cplx=<0\-1000>
|
||||
initial complexity (pass\ 1)
|
||||
.IPs vqsquish=<0\-1>
|
||||
.IPs vqsquish=<0,1>
|
||||
specify how to keep the quantizer between qmin and qmax (pass\ 1/\:2):
|
||||
.RSss
|
||||
0: use cliping
|
||||
0: use clipping
|
||||
.br
|
||||
1: use a nice differentiable function (default)
|
||||
.REss
|
||||
.IPs vlelim=<-1000\-1000>
|
||||
single coefficient elimination threshold for luminance.
|
||||
Negative values will also consider the dc coefficient (should be at least -4
|
||||
or lower for encoding
|
||||
at quant=1):
|
||||
or lower for encoding at quant=1):
|
||||
.RSss
|
||||
0: disabled (default)
|
||||
.br
|
||||
@ -2881,8 +2922,8 @@ or lower for encoding at quant=1):
|
||||
.br
|
||||
7 (JVT recommendation)
|
||||
.REss
|
||||
.IPs vstrict=<-1\-1>
|
||||
(strict) standard compliance.
|
||||
.IPs vstrict=<-1,0,1>
|
||||
strict standard compliance
|
||||
.RSss
|
||||
0: disabled (default)
|
||||
.br
|
||||
@ -2890,12 +2931,26 @@ or lower for encoding at quant=1):
|
||||
reference decoder
|
||||
.br
|
||||
-1: allows non-standard YV12 huffyuv encoding (20% smaller files, but
|
||||
can't be played back by the official huffyuv codec)
|
||||
cannot be played by the official huffyuv codec)
|
||||
.REss
|
||||
.IPs vdpart
|
||||
data partitioning.
|
||||
Adds 2 byte per video packet, improves error-resistance when transfering over
|
||||
Adds 2 Bytes per video packet, improves error-resistance when transferring over
|
||||
unreliable channels (eg.\& streaming over the internet)
|
||||
Each video packet will be encoded in 3 separate partitions:
|
||||
.RSss
|
||||
1. MVs (=movement)
|
||||
.br
|
||||
2. DC coefficients (=low res picture)
|
||||
.br
|
||||
3. AC coefficients (=details)
|
||||
.REss
|
||||
.IPs
|
||||
MV & DC are most important, loosing them looks far worse than loosing the
|
||||
AC and the 1. & 2. partition. (MV&DC) are far smaller than the 3. partition
|
||||
(AC) meaning that errors will hit the AC partition much more often than the
|
||||
MV&DC partitions. Thus, the picture will look better with partitioning than
|
||||
without, as without partitioning an error will trash AC/DC/MV equally.
|
||||
.IPs vpsize=<0\-10000>
|
||||
video packet size, improves error-resistance (see \-vdpart option too):
|
||||
.RSss
|
||||
@ -2920,7 +2975,8 @@ dct algorithm:
|
||||
.REss
|
||||
.IPs idct=<0\-99>
|
||||
idct algorithm.
|
||||
Note: all these IDCTs do pass the IEEE1180 tests afaik:
|
||||
Note: To the best of our knowledge all these IDCTs do pass the IEEE1180
|
||||
tests.
|
||||
.RSss
|
||||
0: automatically select a good one (default)
|
||||
.br
|
||||
@ -2930,7 +2986,7 @@ Note: all these IDCTs do pass the IEEE1180 tests afaik:
|
||||
.br
|
||||
3: simplemmx
|
||||
.br
|
||||
4: libmpeg2mmx (inaccurate, DONT USE for encoding with keyint >100)
|
||||
4: libmpeg2mmx (inaccurate, DON'T USE for encoding with keyint >100)
|
||||
.br
|
||||
5: ps2
|
||||
.br
|
||||
@ -2940,8 +2996,8 @@ Note: all these IDCTs do pass the IEEE1180 tests afaik:
|
||||
.REss
|
||||
.IPs lumi_mask=<0.0\-1.0>
|
||||
luminance masking.
|
||||
Warning: be careful, too large values can cause disasterous things.
|
||||
Warning2: large values might look good on some monitors but may look horrible
|
||||
Warning: Be careful, too large values can cause disastrous things.
|
||||
Warning2: Large values might look good on some monitors but may look horrible
|
||||
on other monitors:
|
||||
.RSss
|
||||
0.0: disabled (default)
|
||||
@ -2964,7 +3020,8 @@ temporal complexity masking (default: 0.0 (disabled))
|
||||
spatial complexity masking.
|
||||
Larger values help against blockiness, if no deblocking filter is used for
|
||||
decoding.
|
||||
Crop any black borders to get better quality:
|
||||
Tip: Crop any black borders completely as they will reduce the quality
|
||||
of the macro blocks (also applies without scplx_mask).
|
||||
.RSss
|
||||
0.0: disabled (default)
|
||||
.br
|
||||
@ -2995,6 +3052,7 @@ YV12: default
|
||||
.REss
|
||||
.IPs qpel
|
||||
use quarter pel motion compensation
|
||||
Tip: This seems only useful for high bitrate encodings.
|
||||
.IPs precmp=<0\-2000>
|
||||
comparison function for motion estimation pre pass
|
||||
.IPs cmp=<0\-2000>
|
||||
@ -3010,15 +3068,15 @@ comparison function for sub pel motion estimation
|
||||
.br
|
||||
3 (DCT): sum of absolute dct transformed differences
|
||||
.br
|
||||
4 (PSNR): sum of the squared quantization errors
|
||||
4 (PSNR): sum of the squared quantization errors (don't use, low quality)
|
||||
.br
|
||||
5 (BIT): number of bits needed for the block
|
||||
.br
|
||||
6 (RD): rate distoration optimal, slow
|
||||
6 (RD): rate distortion optimal, slow
|
||||
.br
|
||||
7 (ZERO): 0
|
||||
.br
|
||||
+256: use chroma too, doesnt work with b frames currently
|
||||
+256: use chroma too, doesn't work (correctly) with B frames currently
|
||||
.REss
|
||||
.IPs predia=<\-99\-6>
|
||||
Diamond type and size for motion estimation pre pass
|
||||
@ -3069,7 +3127,8 @@ Amount of motion predictors from the previous frame
|
||||
.RSss
|
||||
0: (default)
|
||||
.br
|
||||
a: will use 2a+1 x 2a+1 MB square of MV predictors from the previous frame
|
||||
a: will use 2a+1 x 2a+1 macro block square of motion vector predictors from
|
||||
the previous frame
|
||||
.REss
|
||||
.IPs preme=<0\-2>
|
||||
motion estimation pre-pass
|
||||
@ -3082,14 +3141,20 @@ motion estimation pre-pass
|
||||
.REss
|
||||
.IPs subq=<1\-8>
|
||||
subpel refinement quality (for qpel) (default: 8).
|
||||
Note: this has a significant effect on the speed
|
||||
Note: This has a significant effect on the speed.
|
||||
.IPs psnr
|
||||
print the psnr (peak signal to noise ratio) for the whole video after encoding
|
||||
and store the per frame psnr in a file with name like 'psnr_012345.log'.
|
||||
and store the per frame psnr in a file with a name like 'psnr_012345.log'.
|
||||
Return values are in dB (decibel), the higher the better.
|
||||
.IPs mpeg_quant
|
||||
use MPEG quantizers instead of H.263.
|
||||
(default: disabled) (i.e.\& use H.263 quantizers)
|
||||
.IPs aic
|
||||
advanced intra prediction (H.263+ only)
|
||||
Note: vqmin should be 8 or larger.
|
||||
.IPs umv
|
||||
unlimited MVs (H.263+ only)
|
||||
Allow encoding of abritarily long MVs.
|
||||
.RE
|
||||
.
|
||||
.TP
|
||||
|
@ -104,7 +104,7 @@ FOR THE v0.90 RELEASE:
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- update the man page with all current options
|
||||
- merge tech/vop.txt and tech/libavc-options.txt into the man page
|
||||
- merge tech/vop.txt into the man page
|
||||
- merge tech/encoding-tips.txt into encoding.html
|
||||
- finish reviewing all of the docs
|
||||
- mplayer.1
|
||||
|
@ -1,432 +0,0 @@
|
||||
Description of what all those libavcodec options do ...
|
||||
WARNING: I am no encoding expert so the recommendations might be bad ...
|
||||
if you find any errors, missing stuff, ... send a patch or cvs commit if you
|
||||
have an cvs account :)
|
||||
|
||||
lavcopts: (encoder options)
|
||||
---------------------------
|
||||
|
||||
vqmin 1-31 (minimum quantizer) for pass1/2
|
||||
1 is not recommended (much larger file, little quality difference (if u are lucky)
|
||||
and other weird things (if u are less lucky))
|
||||
weird things: msmpeg4, h263 will be very low quality
|
||||
ratecontrol will be confused -> lower quality
|
||||
some decoders will not be able to decode it
|
||||
2 is recommended for normal mpeg4/mpeg1video encoding (default)
|
||||
3 is recommended for h263(p)/msmpeg4
|
||||
the reason for 3 instead of 2 is that 2 could lead to overflows
|
||||
(this will be fixed for h263(p) by changing the quanizer per MB in
|
||||
the future, but msmpeg4 doesnt support that so it cant be fixed for
|
||||
that)
|
||||
|
||||
vqscale 1-31 quantizer for constant quantizer / constant quality encoding
|
||||
1 is not recommended (much larger file, little quality difference and
|
||||
possible other weird things)
|
||||
lower means better quality but larger files
|
||||
see vqmin
|
||||
|
||||
vqmax 1-31 (maximum quantizer) for pass1/2
|
||||
31 default
|
||||
10-31 should be a sane range
|
||||
|
||||
mbqmin 1-31 (minimum macroblock quantizer) for pass1/2
|
||||
2 default
|
||||
|
||||
mbqmax 1-31 (maximum macroblock quantizer) for pass1/2
|
||||
31 default
|
||||
|
||||
vqdiff 1-31 (maximum quantizer difference between I or P frames) for pass1/2
|
||||
3 default
|
||||
|
||||
vmax_b_frames 0-4 (maximum number of B frames between non B frames)
|
||||
0 no b frames (default)
|
||||
0-2 is a sane range for mpeg4
|
||||
|
||||
vme 0-5 (motion estimation)
|
||||
0 none (not recommanded, very lq)
|
||||
1 full (not recommanded, too slow)
|
||||
2 log (not recommanded, lq)
|
||||
3 phods (not recommanded, lq)
|
||||
4 EPZS (default)
|
||||
5 X1 (experimantal, might change from time to time or be just broken)
|
||||
Note: 0-3 ignores the amount of bits spend currently, so dont complain
|
||||
about low quality
|
||||
|
||||
vhq (high quality mode)
|
||||
encode each MB as in all modes and choose the best (this is slow but
|
||||
better filesize/quality)
|
||||
disabled by default
|
||||
|
||||
v4mv
|
||||
allow 4 MV per MB (little difference in filesize/quality)
|
||||
disabled by default
|
||||
|
||||
keyint 0-300 (maximum interval between keyframes)
|
||||
keyframes are needed for seeking as seeking is only possible to a
|
||||
keyframe but they need more space than non-keyframes so larger numbers here
|
||||
mean slightly smaller files, but less precise seeking
|
||||
0 no keyframes
|
||||
>300 is not recommended as the quality might be bad (depends upon
|
||||
decoder, encoder and luck)
|
||||
for strict mpeg1/2/4 compliance this would have to be <=132
|
||||
|
||||
vb_strategy 0-1 for pass 2
|
||||
0 allways use the max number of B frames (default)
|
||||
1 avoid B frames in high motion scenes (this will cause bitrate
|
||||
misprediction)
|
||||
|
||||
vpass
|
||||
1 first pass
|
||||
2 second pass
|
||||
(only need to specify if two-pass encoding is used)
|
||||
Tip: u can try to use constant quantizer mode for pass1 (vqscale=<quantizer>)
|
||||
for huffyuv:
|
||||
pass 1 saves statistics
|
||||
pass 2 encodes with a optimal huffman table based upon the pass 1 stats
|
||||
|
||||
vbitrate (kbits per second) for pass1/2
|
||||
800 is default
|
||||
(if value is bigger then 16000 it is interpreted as bit not kbit!)
|
||||
|
||||
vratetol (filesize tolerance in kbit) for pass1/2
|
||||
this is just an approximation, the real difference can be much smaller
|
||||
or larger
|
||||
1000-100000 is a sane range
|
||||
8000 is default
|
||||
|
||||
vrc_maxrate (maximum bitrate in kbit/sec) for pass1/2
|
||||
vrc_minrate (minimum bitrate in kbit/sec) for pass1/2
|
||||
vrc_buf_size (buffer size in kbit) for pass1/2
|
||||
this is for stuff like VCD
|
||||
VCD: FIXME
|
||||
SVCD: ...
|
||||
DVD: ...
|
||||
Note: vratetol should not be too large during the 2.pass or there might
|
||||
be problems if vrc_(min|max)rate is used
|
||||
|
||||
vb_qfactor (-31.0-31.0) for pass1/2
|
||||
1.25 is default
|
||||
vi_qfactor (-31.0-31.0) for pass1/2
|
||||
0.8 is default
|
||||
vb_qoffset (-31.0-31.0) for pass1/2
|
||||
1.25 is default
|
||||
vi_qoffset (-31.0-31.0) for pass1/2
|
||||
0.0 is default
|
||||
if v{b|i}_qfactor > 0
|
||||
I/B-Frame quantizer = P-Frame quantizer * v{b|i}_qfactor + v{b|i}_qoffset
|
||||
else
|
||||
do normal ratecontrol (dont lock to next P frame quantizer) and
|
||||
set q= -q * v{b|i}_qfactor + v{b|i}_qoffset
|
||||
tip: to do constant quantizer encoding with different quantizers for
|
||||
I/P and B frames you can use:
|
||||
vqmin=<ip_quant>:vqmax=<ip_quant>:vb_qfactor=<b_quant/ip_quant>
|
||||
|
||||
vqblur (0.0-1.0) quantizer blur (pass1)
|
||||
0.0 qblur disabled
|
||||
0.5 is the default
|
||||
1.0 average the quantizer over all previous frames
|
||||
larger values will average the quantizer more over time so that it will
|
||||
be changed slower
|
||||
vqblur (0.0-99.0) quantizer blur (pass2)
|
||||
gaussian blur (gaussian blur cant be done during pass 1 as the future quantizers arent known)
|
||||
0.5 is the default
|
||||
larger values will average the quantizer more over time so that it will
|
||||
be changed slower
|
||||
|
||||
vqcomp quantizer compression (for pass1/2)
|
||||
depends upon vrc_eq
|
||||
|
||||
vrc_eq the main ratecontrol equation (for pass1/2)
|
||||
1 constant bitrate
|
||||
tex constant quality
|
||||
1+(tex/avgTex-1)*qComp approximately the equation of the old ratecontrol code
|
||||
tex^qComp with qcomp 0.5 or something like that (default)
|
||||
|
||||
infix operators: +,-,*,/,^
|
||||
variables:
|
||||
tex texture complexity
|
||||
iTex,pTex intra, non intra texture complexity
|
||||
avgTex average texture complexity
|
||||
avgIITex average intra texture complexity in I frames
|
||||
avgPITex average intra texture complexity in P frames
|
||||
avgPPTex average non intra texture complexity in P frames
|
||||
avgBPTex average non intra texture complexity in B frames
|
||||
mv bits used for MVs
|
||||
fCode maximum length of MV in log2 scale
|
||||
iCount number of intra MBs / number of MBs
|
||||
var spatial complexity
|
||||
mcVar temporal complexity
|
||||
qComp qcomp from the command line
|
||||
isI, isP, isB is 1 if picture type is I/P/B else 0
|
||||
Pi,E see ur favorite math book
|
||||
|
||||
functions:
|
||||
max(a,b),min(a,b) maximum / minimum
|
||||
gt(a,b) is 1 if a>b, 0 otherwise
|
||||
lt(a,b) is 1 if a<b, 0 otherwise
|
||||
eq(a,b) is 1 if a==b,0 otherwise
|
||||
sin,cos,tan,sinh,cosh,tanh,exp,log,abs
|
||||
|
||||
vrc_override user specified quality for specific parts (ending credits ...) (for pass1/2)
|
||||
<start-frame>,<end-frame>,<quality>[/<start-frame>,<end-frame>,<quality>[/...]]
|
||||
quality 2..31 -> quantizer
|
||||
quality -500..0 -> quality correcture in %
|
||||
|
||||
vrc_init_cplx (0-1000) initial complexity for pass1
|
||||
|
||||
vqsquish (0 or 1) for pass1/2 how to keep the quantizer between qmin & qmax
|
||||
0 use cliping
|
||||
1 use a nice differentiable function (default)
|
||||
|
||||
vlelim (-1000-1000) single coefficient elimination threshold for luminance
|
||||
0 disabled (default)
|
||||
-4 (JVT recommendation)
|
||||
negative values will allso consider the dc coefficient
|
||||
should be at least -4 or lower for encoding at quant=1
|
||||
|
||||
vcelim (-1000-1000) single coefficient elimination threshold for chrominance
|
||||
0 disabled (default)
|
||||
7 (JVT recommendation)
|
||||
negative values will allso consider the dc coefficient
|
||||
should be at least -4 or lower for encoding at quant=1
|
||||
|
||||
vstrict (-1,0,1) strict standard compliance
|
||||
0 (default)
|
||||
1 only recommended if you want to feed the output into the mpeg4 reference
|
||||
decoder
|
||||
-1 allows nonstandard YV12 huffyuv encoding (20% smaller files, but
|
||||
cant be played back by the official huffyuv codec)
|
||||
|
||||
vdpart data partitioning
|
||||
adds 2 byte per video packet
|
||||
each videopacket will be encoded in 3 seperate partitions:
|
||||
1. MVs (=movement)
|
||||
2. DC coefficients (=low res picture)
|
||||
3. AC coefficients (=details)
|
||||
the MV & DC are most important, loosing them looks far worse than
|
||||
loosing the AC and the 1. & 2. partition (MV&DC) are far smaller than
|
||||
the 3. partition (AC) -> errors will hit the AC partition much more
|
||||
often than the MV&DC -> the picture will look better with partitioning
|
||||
than without, as without partitining an error will trash AC/DC/MV
|
||||
equally
|
||||
improves error-resistance when transfering over unreliable channels (eg.
|
||||
streaming over the internet)
|
||||
|
||||
vpsize (0-10000) video packet size
|
||||
0 disabled (default)
|
||||
100-1000 good choice
|
||||
improves error-resistance (see vdpart for more info)
|
||||
|
||||
gray grayscale only encoding (a bit faster than with color ...)
|
||||
|
||||
vfdct (0-99) dct algorithm
|
||||
0 automatically select a good one (default)
|
||||
1 fast integer
|
||||
2 accurate integer
|
||||
3 mmx
|
||||
4 mlib
|
||||
|
||||
idct (0-99) idct algorithm
|
||||
0 automatically select a good one (default)
|
||||
1 jpeg reference integer
|
||||
2 simple
|
||||
3 simplemmx
|
||||
4 libmpeg2mmx (inaccurate, DONT USE for encoding with keyint >100)
|
||||
5 ps2
|
||||
6 mlib
|
||||
7 arm
|
||||
note: all these IDCTs do pass the IEEE1180 tests AFAIK
|
||||
|
||||
lumi_mask (0.0-1.0) luminance masking
|
||||
0.0 disabled (default)
|
||||
0.0-0.3 should be a sane range
|
||||
warning: be carefull, too large values can cause disasterous things
|
||||
warning2: large values might look good on some monitors but may look horrible
|
||||
on other monitors
|
||||
|
||||
dark_mask (0.0-1.0) darkness masking
|
||||
0.0 disabled (default)
|
||||
0.0-0.3 should be a sane range
|
||||
warning: be carefull, too large values can cause disasterous things
|
||||
warning2: large values might look good on some monitors but may look horrible
|
||||
on other monitors / TV / TFT
|
||||
|
||||
tcplx_mask (0.0-1.0) temporal complexity masking
|
||||
0.0 disabled (default)
|
||||
|
||||
scplx_mask (0.0-1.0) spatial complexity masking
|
||||
0.0 disabled (default)
|
||||
0.0-0.5 should be a sane range
|
||||
larger values help against blockiness, if no deblocking filter is used
|
||||
for decoding
|
||||
Tip: crop any black borders completly away as they will reduce the quality
|
||||
of the MBs there, this is true if scplx_mask isnt used at all too
|
||||
|
||||
naq normalize adaptive quantization (experimental)
|
||||
when using adaptive quantization (*_mask), the average per-MB quantizer
|
||||
may no longer match the requested frame-level quantizer. using naq will
|
||||
attempt to adjust the per-MB quantizers to maintain the proper average.
|
||||
|
||||
ildct use interlaced dct
|
||||
|
||||
format
|
||||
YV12 (default)
|
||||
422P (for huffyuv)
|
||||
|
||||
pred (for huffyuv)
|
||||
0 left prediction
|
||||
1 plane/gradient prediction
|
||||
2 median prediction
|
||||
|
||||
qpel use quarter pel motion compensation
|
||||
Tip: this seems only usefull for high bitrate encodings
|
||||
|
||||
precmp comparission function for motion estimation pre pass
|
||||
cmp comparission function for full pel motion estimation
|
||||
subcmp comparission function for sub pel motion estimation
|
||||
mbcmp comparission function for macroblock decission
|
||||
0 SAD (sum of absolute differences) (default)
|
||||
1 SSE (sum of squared errors)
|
||||
2 SATD (sum of absolute hadamard transformed differences)
|
||||
3 DCT (sum of absolute dct transformed differences)
|
||||
4 PSNR (sum of the squared quantization errors) (dont use, low quality)
|
||||
5 BIT (number of bits needed for the block)
|
||||
6 RD (rate distoration optimal, slow)
|
||||
7 ZERO (0)
|
||||
+256 (use chroma too, doesnt work (correctly) with b frames currently)
|
||||
Tip: SAD is fast, SATD is good, SSE is something in between
|
||||
Tip2: when using SATD/DCT/BIT/RD for full pel search then a
|
||||
larger diamond something like dia=2 or dia=4 might improve
|
||||
quality, but only for some videos
|
||||
Note: mbcmp is only used if hq mode is disabled
|
||||
|
||||
predia (-99 - 6) diamond type & size for motion estimation pre pass
|
||||
dia (-99 - 6) diamond type & size for motion estimation
|
||||
...
|
||||
-3 shape adaptive diamond with size 3
|
||||
-2 shape adaptive diamond with size 2
|
||||
-1 experimental
|
||||
1 normal size=1 diamond (default) =EPZS type diamond
|
||||
0
|
||||
000
|
||||
0
|
||||
2 normal size=2 diamond
|
||||
0
|
||||
000
|
||||
00000
|
||||
000
|
||||
0
|
||||
...
|
||||
Tip: the shape adaptive stuff seems to be faster at the same quality
|
||||
Note: the sizes of the normal diamonds and shape adaptive ones dont
|
||||
have the same meaning
|
||||
|
||||
trell trellis quantization
|
||||
this will find the optimal encoding for each 8x8 block
|
||||
trellis quantization is quite simple a optimal quantization in the
|
||||
PSNR vs bitrate sense (assuming that there would be no rounding errors introduced
|
||||
by the IDCT, which is obviously not the case) it simply finds a block for the minimum of
|
||||
error + lambda*bits
|
||||
lambda is a qp dependant constant
|
||||
bits is the amount of bits needed to encode the block
|
||||
error is simple the sum of squared errors of the quantization
|
||||
|
||||
last_pred (0-99) amount of motion predictors from the previous frame
|
||||
0 (default)
|
||||
a -> will use 2a+1 x 2a+1 MB square of MV predictors from the previous frame
|
||||
|
||||
preme (0-2) Motion estimation pre-pass
|
||||
0 disabled
|
||||
1 only after I frames (default)
|
||||
2 allways
|
||||
|
||||
subq (1-8) subpel refinement quality (for qpel)
|
||||
8 (default)
|
||||
Note: this has a significant effect on the speed
|
||||
|
||||
psnr will print the psnr for the whole video after encoding and store the per frame psnr
|
||||
in a file with name like "psnr_012345.log"
|
||||
|
||||
aic advanced intra prediction (H.263+ only)
|
||||
Note: vqmin should be 8 or larger
|
||||
|
||||
umv unlimited MVs (H.263+ only)
|
||||
allow encoding of abritary long MVs
|
||||
|
||||
|
||||
lavdopts: (decoder options)
|
||||
---------------------------
|
||||
|
||||
ec error concealment
|
||||
1 use strong deblock filter for damaged MBs
|
||||
2 iterative MV search (slow)
|
||||
3 all (default)
|
||||
Note: just add the ones u want to enable
|
||||
|
||||
er error resilience
|
||||
0 disabled
|
||||
1 carefull (should work with broken encoders)
|
||||
2 normal (default) (works with compliant encoders)
|
||||
3 agressive (more checks but might cause problems even for valid bitstreams)
|
||||
4 very agressive
|
||||
|
||||
bug manual workaround encoder bugs (autodetection isnt foolproof for these)
|
||||
0 nothing
|
||||
1 autodetect bugs (default)
|
||||
2 for msmpeg4v3 some old lavc generated msmpeg4v3 files (no autodetect)
|
||||
4 for mpeg4 xvid interlacing bug (autodetected if fourcc==XVIX)
|
||||
8 for mpeg4 UMP4 (autodetected if fourcc==UMP4)
|
||||
16for mpeg4 padding bug (autodetected)
|
||||
32for mpeg4 illegal vlc bug (autodetected per fourcc)
|
||||
64for mpeg4 XVID&DIVX qpel bug (autodetected per fourcc/ver)
|
||||
128 mpeg4 old standard qpel (autodetected per fourcc/ver)
|
||||
256 mpeg4 another qpel bug (autodetected per fourcc/ver)
|
||||
512 mpeg4 direct-qpel-blocksize bug(autodetected per fourcc/ver)
|
||||
1024 mpeg4 edge padding bug (autodetected per fourcc/ver)
|
||||
Note: just add the ones u want to enable
|
||||
|
||||
gray grayscale only decoding (a bit faster than with color ...)
|
||||
|
||||
idct see lavcopts
|
||||
note: the decoding quality is highest if the same idct algorithm is used
|
||||
for decoding as for encoding, this is often not the most accurate though
|
||||
|
||||
|
||||
Notes: 1. lavc will strictly follow the quantizer limits vqmin, vqmax, vqdiff
|
||||
even if it violates the bitrate / bitrate tolerance
|
||||
2. changing some options between pass1 & 2 can reduce the quality
|
||||
|
||||
FAQ: Q: Why is the filesize much too small?
|
||||
A: Try to increase vqmin=2 or 1 (be carefull with 1, it could cause
|
||||
strange things to happen).
|
||||
Q: What provides better error recovery while keeping the filesize low?
|
||||
Should I use data partitioning or increase the number of video packets?
|
||||
A: Data partitioning is better in this case.
|
||||
|
||||
Glossary:
|
||||
MB Macroblock (16x16 luminance and 8x8 chrominance samples)
|
||||
MV Motion vector
|
||||
ME Motion estimation
|
||||
MC Motion compensation
|
||||
RC Rate control
|
||||
DCT Discrete Cosine Transform
|
||||
IDCT Inverse Discrete Cosine Transform
|
||||
DC The coefficient of the constant term in the DCT (avg value of block)
|
||||
JVT Joint Video Team Standard -- http://www.itu.int/ITU-T/news/jvtpro.html
|
||||
PSNR peak signal to noise ratio
|
||||
|
||||
Examples:
|
||||
mencoder foobar.avi -lavcopts vcodec=mpeg4:vhq:keyint=300:vqscale=2 -o new-foobar.avi
|
||||
mplayer foobar.avi -lavdopts bug=1
|
||||
|
||||
Links:
|
||||
short intro to mpeg coding:
|
||||
http://www.eecs.umich.edu/~amarathe/mpeg.html
|
||||
longer intro to jpeg/mpeg coding:
|
||||
http://www.cs.sfu.ca/undergrad/CourseMaterials/CMPT479/material/notes/Chap4/Chap4.2/Chap4.2.html
|
||||
ftp://ftp.tek.com/mbd/manuals/video_audio/25W_11418_4.pdf
|
||||
|
||||
--
|
||||
Written 2002 by Michael Niedermayer and reviewed by Felix Buenemann.
|
||||
Check the MPlayer documentation for contact-addresses.
|
||||
|
Loading…
Reference in New Issue
Block a user