14.12.2021, 01:03
(13.12.2021, 18:34)Selur Wrote:Would it be possible for you to implement mozjpeg instead as a seperate encoder?mjpeg = motion jpegEncoder mjpeg [MJPEG (Motion JPEG)]: General capabilities: threads Threading capabilities: frame and slice Supported pixel formats: yuvj420p yuvj422p yuvj444p yuv420p yuv422p yuv444p mjpeg encoder AVOptions: -mpv_flags <flags> E..V....... Flags common for all mpegvideo-based encoders. (default 0) skip_rd E..V....... RD optimal MB level residual skipping strict_gop E..V....... Strictly enforce gop size qp_rd E..V....... Use rate distortion optimization for qp selection cbp_rd E..V....... use rate distortion optimization for CBP naq E..V....... normalize adaptive quantization mv0 E..V....... always try a mb with mv=<0,0> -luma_elim_threshold <int> E..V....... single coefficient elimination threshold for luminance (negative values also consider dc coefficient) (from INT_MIN to INT_MAX) (default 0) -chroma_elim_threshold <int> E..V....... single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) (from INT_MIN to INT_MAX) (default 0) -quantizer_noise_shaping <int> E..V....... (from 0 to INT_MAX) (default 0) -error_rate <int> E..V....... Simulate errors in the bitstream to test error concealment. (from 0 to INT_MAX) (default 0) -qsquish <float> E..V....... how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) (from 0 to 99) (default 0) -rc_qmod_amp <float> E..V....... experimental quantizer modulation (from -FLT_MAX to FLT_MAX) (default 0) -rc_qmod_freq <int> E..V....... experimental quantizer modulation (from INT_MIN to INT_MAX) (default 0) -rc_eq <string> E..V....... Set rate control equation. When computing the expression, besides the standard functions defined in the section 'Expression Evaluation', the following functions are available: bits2qp(bits), qp2bits(qp). Also the following constants are available: iTex pTex tex mv fCode iCount mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex. -rc_init_cplx <float> E..V....... initial complexity for 1-pass encoding (from -FLT_MAX to FLT_MAX) (default 0) -rc_buf_aggressivity <float> E..V....... currently useless (from -FLT_MAX to FLT_MAX) (default 1) -border_mask <float> E..V....... increase the quantizer for macroblocks close to borders (from -FLT_MAX to FLT_MAX) (default 0) -lmin <int> E..V....... minimum Lagrange factor (VBR) (from 0 to INT_MAX) (default 236) -lmax <int> E..V....... maximum Lagrange factor (VBR) (from 0 to INT_MAX) (default 3658) -ibias <int> E..V....... intra quant bias (from INT_MIN to INT_MAX) (default 999999) -pbias <int> E..V....... inter quant bias (from INT_MIN to INT_MAX) (default 999999) -motion_est <int> E..V....... motion estimation algorithm (from 0 to 2) (default epzs) zero 0 E..V....... epzs 1 E..V....... xone 2 E..V....... -skip_threshold <int> E..V....... Frame skip threshold (from INT_MIN to INT_MAX) (default 0) -skip_factor <int> E..V....... Frame skip factor (from INT_MIN to INT_MAX) (default 0) -skip_exp <int> E..V....... Frame skip exponent (from INT_MIN to INT_MAX) (default 0) -skip_cmp <int> E..V....... Frame skip compare function (from INT_MIN to INT_MAX) (default dctmax) sad 0 E..V....... Sum of absolute differences, fast sse 1 E..V....... Sum of squared errors satd 2 E..V....... Sum of absolute Hadamard transformed differences dct 3 E..V....... Sum of absolute DCT transformed differences psnr 4 E..V....... Sum of squared quantization errors, low quality bit 5 E..V....... Number of bits needed for the block rd 6 E..V....... Rate distortion optimal, slow zero 7 E..V....... Zero vsad 8 E..V....... Sum of absolute vertical differences vsse 9 E..V....... Sum of squared vertical differences nsse 10 E..V....... Noise preserving sum of squared differences dct264 14 E..V....... dctmax 13 E..V....... chroma 256 E..V....... msad 15 E..V....... Sum of absolute differences, median predicted -sc_threshold <int> E..V....... Scene change threshold (from INT_MIN to INT_MAX) (default 0) -noise_reduction <int> E..V....... Noise reduction (from INT_MIN to INT_MAX) (default 0) -ps <int> E..V....... RTP payload size in bytes (from INT_MIN to INT_MAX) (default 0) -mepc <int> E..V....... Motion estimation bitrate penalty compensation (1.0 = 256) (from INT_MIN to INT_MAX) (default 256) -mepre <int> E..V....... pre motion estimation (from INT_MIN to INT_MAX) (default 0) -intra_penalty <int> E..V....... Penalty for intra blocks in block decision (from 0 to 1.07374e+09) (default 0) -pred <int> E..V....... Prediction method (from 1 to 3) (default left) left 1 E..V....... plane 2 E..V....... median 3 E..V....... -huffman <int> E..V....... Huffman table strategy (from 0 to 1) (default optimal) default 0 E..V....... optimal 1 E..V....... -force_duplicated_matrix <boolean> E..V....... Always write luma and chroma matrix for mjpeg, useful for rtp streaming. (default false) -mpeg_quant <int> E..V......P Deprecated, does nothing (from 0 to 0) (default 0) -a53cc <boolean> E..V......P Deprecated, does nothing (default true) -b_strategy <int> E..V......P Deprecated, does nothing (from 0 to 2) (default 0) -b_sensitivity <int> E..V......P Deprecated, does nothing (from 1 to INT_MAX) (default 40) -brd_scale <int> E..V......P Deprecated, does nothing (from 0 to 3) (default 0)
This usually means the jpegs are written into a container like .avi/.mov/...
I don't see any 'quality'-control. May be '-q:v X' works,...
I will think about it, if someone can find some decent documentation.
Cu Selur
And also as to the mjpeg part, q:v is indeed the intended quality control for it, as for the output extension, not specifying the encoder and instead just using it to export .jpg seems to work

