主要AVOptions
公有AVOptions
-preset
主要用来调节编码速度和质量的平衡,虽然libx264和h264_nvenc都有此参数,但是该参数的可选项却不完全相同:
preset是通过设置一系列编码参数来实现调节编码速度和质量的效果的,
e.g. -preset faster
是做了如下设置 --no-mixed-refs --rc-lookahead 20 --ref 2 --subme 4 --weightp 1
详细信息见文章最后一章的x264 encoding options。
libx264 有10个选项
速度由快到慢,速度越慢,质量越好,压缩比越大;默认是medium。
- ultrafast
- superfast
- veryfast
- faster
- fast
- medium
- slow
- slower
- veryslow
- placebo
h264_nvenc 有11个选项
默认是medium。
- slow
- medium
- fast
- hp
- hq
- bd
- ll
- llhq
- llhp
- lossless
- losslesshp
针对 libx264做过简单的各选项对比测试,结果如下图
-profile
用来设置画质级别, 默认级别为 high:
- Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
- Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), 也支持CAVLC 和CABAC 的支持;
- High profile:高级画质。在main Profile 的基础上增加了8x8内部预测、自定义量化、 无损视频编码和更多的YUV 格式;
H.264 Baseline profile和Main profile都是针对8位样本数据、4:2:0格式(YUV)的视频序列。在相同配置情况下,High profile(HP)可以比Main profile(MP)降低10%的码率。 根据应用领域的不同,Baseline profile多应用于实时通信领域,Main profile多应用于流媒体领域,High profile则多应用于广电和存储领域。
除了这三项之外,high还衍生出了 high10、 high422、 high444、high444p 等参数。。。。。
该参数覆盖的用户设置项见文章最后一章的x264 encoding options。
-level
-crf
-cq
crf可以根据视频的运动和静止动态的进行压缩。
与crf、cq、qp、vbr、cbr相关的解析可以参考:Understanding Rate Control Modes (x264, x265, vpx) 和 CRF Guide (Constant Rate Factor in x264 and x265)
libx264
-crf d Select the quality for constant quality mode (from -1 to FLT_MAX) (default -1)
h264_nvenc
-cq Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
-qp
类似于
crf
,但相同比特率下质量更差,建议使用crf
libx264
Constant quantization parameter rate control method (from -1 to INT_MAX) (default -1)
h264_nvenc
Constant quantization parameter rate control method (from -1 to 51) (default -1)
libx264 专有参数
-tune
为特定类型的源或情况调整设置
主要参数有
- film ( 电影、真人类型)
- animation (动画)
- grain (需要保留大量的grain时用,高比特率编码)
- stillimage (静态图像编码时使用)
- psnr (为提高psnr做了优化的参数)
- ssim (为提高ssim做了优化的参数)
- fastdecode (可以快速解码的参数)
- zerolatency (零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码)
详细 help 信息
libx264 AVOptions
查看指令
ffmpeg -h encoder=libx264
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-opencl --enable-videotoolbox
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Encoder libx264 [libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10]:
General capabilities: delay threads
Threading capabilities: auto
Supported pixel formats: yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le yuv444p10le nv20le
libx264 AVOptions:
-preset <string> E..V..... Set the encoding preset (cf. x264 --fullhelp) (default "medium")
-tune <string> E..V..... Tune the encoding params (cf. x264 --fullhelp)
-profile <string> E..V..... Set profile restrictions (cf. x264 --fullhelp)
-fastfirstpass <boolean> E..V..... Use fast settings when encoding first pass (default true)
-level <string> E..V..... Specify level (as defined by Annex A)
-passlogfile <string> E..V..... Filename for 2 pass stats
-wpredp <string> E..V..... Weighted prediction for P-frames
-a53cc <boolean> E..V..... Use A53 Closed Captions (if available) (default true)
-x264opts <string> E..V..... x264 options
-crf <float> E..V..... Select the quality for constant quality mode (from -1 to FLT_MAX) (default -1)
-crf_max <float> E..V..... In CRF mode, prevents VBV from lowering quality beyond this point. (from -1 to FLT_MAX) (default -1)
-qp <int> E..V..... Constant quantization parameter rate control method (from -1 to INT_MAX) (default -1)
-aq-mode <int> E..V..... AQ method (from -1 to INT_MAX) (default -1)
none E..V.....
variance E..V..... Variance AQ (complexity mask)
autovariance E..V..... Auto-variance AQ
autovariance-biased E..V..... Auto-variance AQ with bias to dark scenes
-aq-strength <float> E..V..... AQ strength. Reduces blocking and blurring in flat and textured areas. (from -1 to FLT_MAX) (default -1)
-psy <boolean> E..V..... Use psychovisual optimizations. (default auto)
-psy-rd <string> E..V..... Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format.
-rc-lookahead <int> E..V..... Number of frames to look ahead for frametype and ratecontrol (from -1 to INT_MAX) (default -1)
-weightb <boolean> E..V..... Weighted prediction for B-frames. (default auto)
-weightp <int> E..V..... Weighted prediction analysis method. (from -1 to INT_MAX) (default -1)
none E..V.....
simple E..V.....
smart E..V.....
-ssim <boolean> E..V..... Calculate and print SSIM stats. (default auto)
-intra-refresh <boolean> E..V..... Use Periodic Intra Refresh instead of IDR frames. (default auto)
-bluray-compat <boolean> E..V..... Bluray compatibility workarounds. (default auto)
-b-bias <int> E..V..... Influences how often B-frames are used (from INT_MIN to INT_MAX) (default INT_MIN)
-b-pyramid <int> E..V..... Keep some B-frames as references. (from -1 to INT_MAX) (default -1)
none E..V.....
strict E..V..... Strictly hierarchical pyramid
normal E..V..... Non-strict (not Blu-ray compatible)
-mixed-refs <boolean> E..V..... One reference per partition, as opposed to one reference per macroblock (default auto)
-8x8dct <boolean> E..V..... High profile 8x8 transform. (default auto)
-fast-pskip <boolean> E..V..... (default auto)
-aud <boolean>