view DOCS/tech/libavc-options.txt @ 6260:96b5efcad587

use new api of libfame 0.9.0
author arpi
date Sat, 01 Jun 2002 20:27:14 +0000
parents f5afd6d4d52f
children 6bc87a7619ab
line wrap: on
line source

Description of what all thouse libavcodec options do ...
WARNING: iam no encoding expert so the recomanditions might be bad ...
if u find any errors, missing stuff, ... send a patch or cvs commit if u have an cvs account :)

vqmin 1-31 (minimum quantizer) for pass1/2
	1 is not recomanded (much larger file, little quality difference and possible other weird things)
	2 is recommanded for normal mpeg4/mpeg1video encoding
	3 is recommanded for h263(p)/msmpeg4 (default)
	   the reason for 3 instead of 2 is that 2 could lead to overflows (this will be fixed for h263(p)
	   by chageing 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 recomanded (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
	15 default
	10-31 should be a sane range

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)

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

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
	cannot be used with b frames or in lq mode currently
	disabled by default

keyint  0-300 (maximum interval between keyframes)
	keyframes are needed for seeking as seeking is only possible to a keyframe but keyframes need more space
	than non keyframes so larger numbers here mean slightly smaller files
	0 no keyframes 
	>300 is not recomanded as the quality might be bad (depends upon decoder & encoder & luck)

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 missprediction)

vpass
	1 first pass
        2 second pass

vbitrate (kbits per sec) for pass1/2
	800 is default

vratetol (filesize tolerance in kbit) for pass1/2
	this is just approximate, the real difference can be much smaller or larger
	1000- 100000 is a sane range
	8000 is default

vb_qfactor (1.0-31.0) (BFrame quantizer= PFrame quantizer * vb_qfactor) for pass1/2
	2.0 is default
	tip: to do constant quantizer encoding with different quantizers for I/P and B frames
	     u can use vqmin=<ip-quant>:vqmax=<ip-quant>:vb_qfactor=<b_quant/ip_quant>

vqblur (0.0-1.0) quantizer blur (for 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 over time more so that the quantizer will be changed slower

vqcomp (0.0-1.0) quantizer compression (for pass1/2)
	0.0 constant bitrate encoding, so fast moton frames will get as many bits as low motion
	    (high motion scenes look bad)
	0.5 (default)
	1.0 constant quantizer encoding (low motion scenes look bad)

vrc_strategy (0,1,2)
	FIXME

----------- the following options are only available in the patched version of libavcodec
patch at http://www.mplayerhq.hu/~michael/
patch will be merged into ffmpeg cvs in a few days (the reason that its not in cvs yet is that
the other ffmpeg developers didnt want big untested changes before release)
        
vlelim (0-1000) single coefficient elimination threshold for luminance
	0 disabled (default)
	4 (JVT recomandition)

vcelim (0-1000) single coefficient elimination threshold for chrominance
	0 disabled (default)
	7 (JVT recomandition)

vstrict strict standart compliance
	only recomanded if u want to feed the output into the mpeg4 reference decoder

vdpart	data partitioning
	+2 byte per video packet
	improves resistance against damages after encoding

vpsize	(0-10000) video packet size
	0 disabled (default)
	500-1000 good choice
	improves resistance against damages after encoding

lavdopts: (decoder options)
ver	error resilience
	-1 needed for some very broken, encoders which completly ignore the standarts
	0 (default)
	1 more aggressive error detection, lavc might think that some correct streams contain errors

vbug	manual workaround encoder bugs
	0 (default)
	1 (workaround for some old lavc generated msmpeg4v3 files)


Notes:	1. lavc will strictly follows 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: the file is much too small
	A: vqmin=2 or 1 (be carefull with 1, it could cause strange things to happen)
	Q: i want to use -pass 1 & -pass 2 with vmax_b_frames>0
	A: read DOCS/tech/patches.txt and send a patch ;)
	Q: which provides better error recovery per filesize increase data partitioning or video packets?
	A: data partitioning

glossary:
MB	Macroblock (16x16 luminance & 8x8 chrominance samples)
MV	Motion vector
ME	Motion estimation
MC	Motion compensation

example:
mencoder foobar.avi -lavcopts vcodec=mpeg4:vhq:keyint=300:vqscale=2 -o new-foobar.avi