diff options
Diffstat (limited to 'debian/transcode/transcode-1.1.7/docs/export_ffmpeg.txt')
-rw-r--r-- | debian/transcode/transcode-1.1.7/docs/export_ffmpeg.txt | 470 |
1 files changed, 470 insertions, 0 deletions
diff --git a/debian/transcode/transcode-1.1.7/docs/export_ffmpeg.txt b/debian/transcode/transcode-1.1.7/docs/export_ffmpeg.txt new file mode 100644 index 00000000..63575a88 --- /dev/null +++ b/debian/transcode/transcode-1.1.7/docs/export_ffmpeg.txt @@ -0,0 +1,470 @@ +Parts based on mplayers DOCS/tech/libavc-option.txt. + +Some (basic) options are supported through the transcode commandline and +some through the config file ffmpeg.cfg or ~/.ffmpeg.cfg. The format of the +config file is simple. It can consists of several sections, each prefixed +by a header [codec] which is the same string you give to transcode through -F. + +WARNING: contrary to popular belief, it's NOT possible to supply libavcodec +OPTIONS to the ffmpeg export module using -F. The -F option is solely used +to select the CODEC. Libavcodec options go in the config file. + +To see all supported options, have a look at the output of 'transcode -y +ffmpeg -F mpeg4 -q2' + +For the most up-to-date description of the options, have a look at your +mplayer manual page. Note that not all options may be supported by transcode. + + --- ~/.ffmpeg.cfg ---- + [mpeg4] + qpel = 1 + trellis = 1 + + [mpeg1video] + --- ~/.ffmpeg.cfg ---- + +Now to the options. + +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 quantizer per MB in + the future, but msmpeg4 doesnt support that so it cant be fixed for + that) + + TRANSCODE: use --divx_quant min,max + +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 + + TRANSCODE: use --divx_quant min + +vqmax 1-31 (maximum quantizer) for pass1/2 + 31 default + 10-31 should be a sane range + + TRANSCODE: use --divx_quant min,max + +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) + enabled by default + + NOTE: this is option is obsolete and has been replaced by the mbd + option, values: + + 0: fast (real-time encoding) (default) + 1: hq mode 1 + 2: hq mode 2 + +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 + + TRANSCODE: use -w X,X,keyint + +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 + + TRANSCODE: use -R (1|2) + +vbitrate (kbits per second) for pass1/2 + 800 is default + (if value is bigger then 16000 it is interpreted as bit not kbit!) + + TRANSCODE: use -w bitrate + +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" + + +TRANSCODE: The decoder options are currently unused in transcode + +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 + 32for mpeg4 illegal vlc bug (autodetected per fourcc) + 64for mpeg4 XVID&DIVX qpel bug (autodetected) + 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. + |