Mac 环境 VVenC 编译与编码命令行工具使用教程
VVenC
VVenC 是一个开源的高效视频编码器,专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准,主要目的是提供比 HEVC 更高的压缩效率,同时保持或提高视频质量。H.266/VVC 可以在相同的视频质量下减少大约 50% 的比特率,或者在相同的比特率下提供更好的视频质量。
VVenC 特性
-
高压缩效率:
VVenC 实现了 H.266/VVC 标准,可以在相同的画质下提供比 H.265/HEVC 更高的压缩效率。对于流媒体、广播电视和视频存储等场景,VVenC 能显著降低带宽需求。 -
灵活性和扩展性:
VVenC 支持 H.266/VVC 标准的所有特性,包括可变帧率、可变分辨率等,适用于多种应用场景,如4K、8K视频编码。 -
开源与跨平台:
VVenC 是一个开源项目,允许开发者进行自由修改和分发,同时支持多个平台(Linux、Windows、macOS)。 -
编码速度与质量优化:
VVenC 提供了不同的编码速度设置,可以根据需要在速度和质量之间进行权衡,满足实时编码或高质量编码的需求。
VVenC 编译
- 源码下载:https://github.com/fraunhoferhhi/vvenc
- 编译:比较简单,按照 README中用 CMake 编译即可。
mkdir build
cd build
cmake ..
make
- 编译后文件:
- bin/release-static:vvencFFapp、vvencapp、vvencinterfacetest、vvenclibtest
- include/vvenc:vvenc.h、vvencCfg.h、vvencDecl.h
- lib/release-static:libvvenc.a
编码工具使用
- vvencFFapp 使用:全特征的专家级编码器
admin@bogon release-static % ./vvencFFapp
vvencFFapp: VVenC, the Fraunhofer H.266/VVC Encoder, version 1.12.0 [Mac OS X][clang 15.0.0][64 bit][SIMD=NEON]#======== General Options ================-h, --help [0] show default help--fullhelp [0] show full help-v, --Verbosity [verbose] verbosity level (0: silent, 1: error, 2: warning, 3: info, 4: notice, 5: verbose,6: debug)--stats [1] enable or disable printing of statistics (fps, bitrate, estimation of encodingtime)--version [0] show version #======== Input Options ================-i, --InputFile [] Original YUV input file name or '-' for reading from stdin-s, --Size [0x0] Input resolution (WidthxHeight)--InputBitDepth [8] Bit-depth of input file-f, --FramesToBeEncoded [0] Number of frames to be encoded (default=all)-fr, --FrameRate [0] Temporal rate (framerate numerator) e.g. 25,30, 30000, 50,60, 60000--FrameScale [1] Temporal scale (framerate denominator) e.g. 1, 1001--fps [0/1] Framerate as int or fraction (num/denom) --TicksPerSecond [27000000] Ticks Per Second for dts generation, (1..27000000, -1: ticks per frame=1)--LeadFrames [0] Number of leading frames to be read before starting the encoding, use whensplitting the video into overlapping segments--TrailFrames [0] Number of trailing frames to be read after frames to be encoded, use when splittingthe video into overlapping segments-fs, --FrameSkip [0] number of frames to skip at start of input YUV [off]--segment [off] when encoding multiple separate segments, specify segment position to enable segment concatenation (first, mid, last) [off]first: first segment mid : all segments between first and last segmentlast : last segment#======== Output options ================-b, --BitstreamFile [] Bitstream output file name-o, --ReconFile [] Reconstructed YUV output file name--OutputBitDepth [0] Bit-depth of output file#======== Threading, performance ================-t, --Threads [0] number of threads (multithreading; -1: resolution < 720p: 4, < 5K 2880p: 8, >= 5K2880p: 12 threads)--MTProfile [off] set automatic multi-threading setting (-1: auto, 0: off, 1,2,3: on, enables tiles,IFP and WPP automatically depending on the number of threads)--preset [medium] select preset for specific encoding setting (faster, fast, medium, slow, slower,medium_lowDecEnergy)--Tiles [-1x-1] Set number of tile columns and rows#======== Slice decision options ================-ip, --IntraPeriod [0] Intra period in frames (0: use intra period in seconds (refreshsec), else:n*gopsize)-rs, --RefreshSec [1] Intra period/refresh in seconds-dr, --DecodingRefreshType [cra] intra refresh type (idr, cra, cra_cre: CRA, constrained RASL picture encoding, none, rpsei: Recovery Point SEI,idr_no_radl: IDR, without leading pictures, use for DASH)-g, --GOPSize [32] GOP size of temporal structure (16,32)--PicReordering [1] Allow reordering of pictures (0:off, 1:on), should be disabled for low delayrequirements--POC0IDR [0] start encoding with POC 0 IDR#======== Rate control, Perceptual Quantization ================--NumPasses [-1] number of rate control passes (1,2)--Passes [-1] number of rate control passes (1,2)--Pass [-1] rate control pass for two-pass rate control (-1,1,2)--LookAhead [-1] Enable pre-analysis pass with picture look-ahead (-1,0,1)--RCStatsFile [] rate control statistics file--TargetBitrate [0] Rate control: target bitrate [bits/second], use e.g. 1.5M, 1.5Mbps, 1500k,1500kbps, 1500000bps, 1500000--MaxBitrate [0] Rate control: approximate maximum instantaneous bitrate [bits/second] (0: no ratecap; least constraint)-qpa, --PerceptQPA [0] Enable perceptually motivated QP adaptation, XPSNR based (0:off, 1:on)--STA [-1] Enable slice type adaptation at GOPSize>8 (-1: auto, 0: off, 1: adapt slice type,2: adapt NAL unit type)--MinIntraDistance [-1] With STA: set a minimum coded frame distance to the previous intra frame (-1:GOPSize)#======== Quantization parameters ================-q, --QP [32] Qp value (0-63)#======== Profile, Level, Tier ================--Profile [auto] profile (auto, main_10, main_10_still_picture)--Level [auto] level limit (auto, 1.0, 2.0,2.1, 3.0,3.1, 4.0,4.1, 5.0,5.1,5.2, 6.0,6.1,6.2,6.3,15.5)--Tier [main] tier for interpretation of level (main, high)#======== VUI and SEI options ================--Sdr [off] set SDR mode + BT.709, BT.2020, BT.470 color space. use: off, sdr|sdr_709,sdr_2020, sdr_470bg--Hdr [off] set HDR mode + BT.709 or BT.2020 color space (+SEI messages for hlg) If maxcll ormasteringdisplay is set, HDR10/PQ is enabled. use: off, pq|hdr10,pq_2020|hdr10_2020, hlg, hlg_2020
- 编码命令:
./vvencFFapp -i Cactus_1920x1080_50.yuv --Size 1920x1080 -fr 15 --BitstreamFile out.h266
admin@bogon release-static % ./vvencFFapp -i Cactus_1920x1080_50.yuv --Size 1920x1080 -fr 15 --BitstreamFile out.h266
vvencFFapp: VVenC, the Fraunhofer H.266/VVC Encoder, version 1.12.0 [Mac OS X][clang 15.0.0][64 bit][SIMD=NEON]
vvencFFapp [info]: started @ Mon Dec 30 15:52:52 2024
vvenc [verbose]: Input File : Cactus_1920x1080_50.yuv
vvenc [verbose]: Bitstream File : out.h266
vvenc [verbose]: Real Format : 1920x1080 yuv420p 15 Hz SDR 500 frames
vvenc [verbose]: Frames : encode 500 frames
vvenc [verbose]: Internal format : 1920x1080 15 Hz SDR
vvenc [verbose]: Threads : 0 (parallel frames: 0)
vvenc [verbose]: Rate control : QP 32
vvenc [verbose]: Perceptual optimization : Disabled
vvenc [verbose]: Intra period (keyframe) : 16
vvenc [verbose]: Decoding refresh type : CRA
vvenc [verbose]: Sequence PSNR output : Linear average only
vvenc [verbose]: Hexadecimal PSNR output : Disabled
vvenc [verbose]: Sequence MSE output : Disabled
vvenc [verbose]: Frame MSE output : Disabled
vvenc [verbose]: Cabac-zero-word-padding : Enabled
vvenc [verbose]: Frame index : all frames
vvenc [verbose]: Profile : main_10
vvenc [verbose]: Level : 3.1
vvenc [verbose]: CU size : 128
vvenc [verbose]: Max TB size : 64
vvenc [verbose]: Min CB size : 4
vvenc [verbose]: Motion search range : 384
vvenc [verbose]: QP : 32
vvenc [verbose]: Max dQP signaling subdiv : 0
vvenc [verbose]: Cb QP Offset (dual tree) : 0 (0)
vvenc [verbose]: Cr QP Offset (dual tree) : 0 (0)
vvenc [verbose]: GOP size : 32
vvenc [verbose]: PicReordering : 1
vvenc [verbose]: Input bit depth : (Y:8, C:8)
vvenc [verbose]: MSB-extended bit depth : (Y:8, C:8)
vvenc [verbose]: Internal bit depth : (Y:10, C:10)
vvenc [verbose]: cu_chroma_qp_offset_subdiv : -1
vvenc [verbose]: log2_sao_offset_scale_luma : 0
vvenc [verbose]: log2_sao_offset_scale_chroma : 0
vvenc [verbose]: Cost function : Lossy coding
vvenc [verbose]: Film grain analysis : 0vvenc [verbose]: CODING TOOL CFG: CTU128 QTMin44BTT21 IBD:1 SAO:1 ALF:1 (NonLinLuma:0 NonLinChr:0) CCALF:1 Tiles:-1x-1 Slices:1 WPP:0 WPP-Substreams:1 TMVP:1 DQ:1 SDH:0 CST:1 BDOF:1 DMVR:1 MTSImplicit:1 SBT:0 JCbCr:1 CabacInitPresent:1 AMVR:5 SMVD:3 LMCS:2 (Signal:SDR Opt:0) CIIP:0 MIP:1 AFFINE:4 (PROF:1, Type:1) MMVD:3 DisFracMMVD:1 SbTMVP:1 GPM:3 LFNST:1 MTS:0 ISP:3 TS:2 TSLog2MaxSize:4 useChromaTS:0 BDPCM:2 IBC:2 BCW:0
vvenc [verbose]: ENC. ALG. CFG: QPA:0 HAD:1 RDQ:1 RDQTS:1 ASR:1 MinSearchWindow:96 EDO:2 MCTF:2 BIM:1
vvenc [verbose]: PRE-ANALYSIS CFG: STA:1 LeadFrames:0 TrailFrames:0
vvenc [verbose]: FAST TOOL CFG: ECU:0 FEN:3 FDM:1 FastSearch:4 (SCC:2) LCTUFast:1 FastMrg:2 PBIntraFast:1 AMaxBT:1 FastQtBtEnc:1 ContentBasedFastQtbt:1 FastMIP:3 FastIntraTools:1 IntraEstDecBit:2 FastLocalDualTree:1 IntegerET:0 FastSubPel:1 ReduceFilterME:2 QtbttExtraFast:3 FastTTSplit:5 IBCFastMethod:3 FIM:0 ALFSpeed:0 QuantThr:4 SelectiveRDQO:0
vvenc [verbose]: RATE CONTROL CFG: RateControl:0 QP:32 LookAhead:0 FirstPassMode:0
vvenc [verbose]: PARALLEL PROCESSING CFG: NumThreads:0 MaxParallelFrames:0 IFP:0 (IFPLines:0) WppBitEqual:0 WF:0 POC 15 TId: 0 (IDR_W_RADL, I-SLICE, QP 29, TF 2) 680504 bits [Y 36.7620 dB U 39.1978 dB V 42.0054 dB] [ET 14 ] [L0 ] [L1 ]
POC 7 TId: 2 ( RADL, B-SLICE, QP 34, TF 0) 115280 bits [Y 35.5292 dB U 38.5115 dB V 40.7113 dB] [ET 4 ] [L0 15 ] [L1 15 ]
POC 3 TId: 3 ( RADL, B-SLICE, QP 37) 41024 bits [Y 35.0316 dB U 38.4638 dB V 40.4562 dB] [ET 3 ] [L0 7 15 ] [L1 7 15 ]
POC 1 TId: 4 ( RADL, B-SLICE, QP 40) 28888 bits [Y 34.4404 dB U 38.4675 dB V 40.3796 dB] [ET 1 ] [L0 3 7 ] [L1 3 7 ]
POC 0 TId: 5 ( RADL, B-SLICE, QP 41) 14752 bits [Y 34.0539 dB U 38.3535 dB V 40.1910 dB] [ET 0 ] [L0 1 ] [L1 1 ]
POC 2 TId: 5 ( RADL, B-SLICE, QP 41) 4488 bits [Y 34.6672 dB U 38.4853 dB V 40.4677 dB] [ET 0 ] [L0 1 ] [L1 3 ]
POC 5 TId: 4 ( RADL, B-SLICE, QP 40) 9184 bits [Y 35.0381 dB U 38.4972 dB V 40.5848 dB] [ET 1 ] [L0 3 7 ] [L1 7 15 ]
POC 4 TId: 5 ( RADL, B-SLICE, QP 41) 3744 bits [Y 34.8863 dB U 38.4668 dB V 40.5362 dB] [ET 0 ] [L0 3 ] [L1 5 ]
POC 6 TId: 5 ( RADL, B-SLICE, QP 41) 2480 bits [Y 35.1109 dB U 38.4947 dB V 40.6200 dB] [ET 0 ] [L0 5 ] [L1 7 ]
POC 11 TId: 3 ( RADL, B-SLICE, QP 38) 32888 bits [Y 35.3560 dB U 38.7223 dB V 41.0028 dB] [ET 2 ] [L0 7 15 ] [L1 15 7 ]
POC 9 TId: 4 ( RADL, B-SLICE, QP 40) 11888 bits [Y 35.1461 dB U 38.6167 dB V 40.8196 dB] [ET 1 ] [L0 7 11 ] [L1 11 15 ]
POC 8 TId: 5 ( RADL, B-SLICE, QP 41) 3008 bits [Y 35.2190 dB U 38.5908 dB V 40.7640 dB] [ET 0 ] [L0 7 ] [L1 9 ]
POC 10 TId: 5 ( RADL, B-SLICE, QP 41) 4112 bits [Y 35.0811 dB U 38.6898 dB V 40.8922 dB] [ET 0 ] [L0 9 ] [L1 11 ]
POC 13 TId: 4 ( RADL, B-SLICE, QP 40) 14984 bits [Y 35.4017 dB U 38.8514 dB V 41.2206 dB] [ET 1 ] [L0 11 7 ] [L1 15 11 ]
POC 12 TId: 5 ( RADL, B-SLICE, QP 41) 4768 bits [Y 35.2061 dB U 38.7486 dB V 41.0721 dB] [ET 0 ] [L0 11 ] [L1 13 ]
vvenc [info]: stats: 3.0% frame= 15/500 fps= 0.4 avg_fps= 0.4 bitrate= 971.99 kbps avg_bitrate= 971.99 kbps elapsed= 00h:00m:40s left= 00h:21m:31s
.
.
.
vvenc [info]: stats summary: frame= 500/500 avg_fps= 0.4 avg_bitrate= 848.51 kbps
vvenc [info]: stats summary: frame I: 31, kbps: 9666.70, AvgQP: 28.52
vvenc [info]: stats summary: frame P: 0, kbps: nan, AvgQP: nan
vvenc [info]: stats summary: frame B: 469, kbps: 265.64, AvgQP: 39.93vvenc [info]: Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
vvenc [info]: 500 a 848.5082 35.6287 39.0437 41.5993 36.6601vvencFFapp [info]: finished @ Mon Dec 30 16:12:41 2024
vvencFFapp [info]: Total Time: 1174.888 sec. [user] 1188.995 sec. [elapsed]
- 加速编码命令(增加了线程、preset、MTPfrofile):
./vvencFFapp -i Cactus_1920x1080_50.yuv --Size 1920x1080 -fr 15 --Threads 4 --preset faster --MTProfile -1 --BitstreamFile out.h266
- 编码数据汇总:
- vvencapp 使用:基础编码器
admin@bogon release-static % ./vvencFFapp
vvencFFapp: VVenC, the Fraunhofer H.266/VVC Encoder, version 1.12.0 [Mac OS X][clang 15.0.0][64 bit][SIMD=NEON]#======== General Options ================-h, --help [0] show default help--fullhelp [0] show full help-v, --Verbosity [verbose] verbosity level (0: silent, 1: error, 2: warning, 3: info, 4: notice, 5: verbose,6: debug)--stats [1] enable or disable printing of statistics (fps, bitrate, estimation of encodingtime)--version [0] show version #======== Input Options ================-i, --InputFile [] Original YUV input file name or '-' for reading from stdin-s, --Size [0x0] Input resolution (WidthxHeight)--InputBitDepth [8] Bit-depth of input file-f, --FramesToBeEncoded [0] Number of frames to be encoded (default=all)-fr, --FrameRate [0] Temporal rate (framerate numerator) e.g. 25,30, 30000, 50,60, 60000--FrameScale [1] Temporal scale (framerate denominator) e.g. 1, 1001--fps [0/1] Framerate as int or fraction (num/denom) --TicksPerSecond [27000000] Ticks Per Second for dts generation, (1..27000000, -1: ticks per frame=1)--LeadFrames [0] Number of leading frames to be read before starting the encoding, use whensplitting the video into overlapping segments--TrailFrames [0] Number of trailing frames to be read after frames to be encoded, use when splittingthe video into overlapping segments-fs, --FrameSkip [0] number of frames to skip at start of input YUV [off]--segment [off] when encoding multiple separate segments, specify segment position to enable segment concatenation (first, mid, last) [off]first: first segment mid : all segments between first and last segmentlast : last segment#======== Output options ================-b, --BitstreamFile [] Bitstream output file name-o, --ReconFile [] Reconstructed YUV output file name--OutputBitDepth [0] Bit-depth of output file#======== Threading, performance ================-t, --Threads [0] number of threads (multithreading; -1: resolution < 720p: 4, < 5K 2880p: 8, >= 5K2880p: 12 threads)--MTProfile [off] set automatic multi-threading setting (-1: auto, 0: off, 1,2,3: on, enables tiles,IFP and WPP automatically depending on the number of threads)--preset [medium] select preset for specific encoding setting (faster, fast, medium, slow, slower,medium_lowDecEnergy)--Tiles [-1x-1] Set number of tile columns and rows#======== Slice decision options ================-ip, --IntraPeriod [0] Intra period in frames (0: use intra period in seconds (refreshsec), else:n*gopsize)-rs, --RefreshSec [1] Intra period/refresh in seconds-dr, --DecodingRefreshType [cra] intra refresh type (idr, cra, cra_cre: CRA, constrained RASL picture encoding, none, rpsei: Recovery Point SEI,idr_no_radl: IDR, without leading pictures, use for DASH)-g, --GOPSize [32] GOP size of temporal structure (16,32)--PicReordering [1] Allow reordering of pictures (0:off, 1:on), should be disabled for low delayrequirements--POC0IDR [0] start encoding with POC 0 IDR#======== Rate control, Perceptual Quantization ================--NumPasses [-1] number of rate control passes (1,2)--Passes [-1] number of rate control passes (1,2)--Pass [-1] rate control pass for two-pass rate control (-1,1,2)--LookAhead [-1] Enable pre-analysis pass with picture look-ahead (-1,0,1)--RCStatsFile [] rate control statistics file--TargetBitrate [0] Rate control: target bitrate [bits/second], use e.g. 1.5M, 1.5Mbps, 1500k,1500kbps, 1500000bps, 1500000--MaxBitrate [0] Rate control: approximate maximum instantaneous bitrate [bits/second] (0: no ratecap; least constraint)-qpa, --PerceptQPA [0] Enable perceptually motivated QP adaptation, XPSNR based (0:off, 1:on)--STA [-1] Enable slice type adaptation at GOPSize>8 (-1: auto, 0: off, 1: adapt slice type,2: adapt NAL unit type)--MinIntraDistance [-1] With STA: set a minimum coded frame distance to the previous intra frame (-1:GOPSize)#======== Quantization parameters ================-q, --QP [32] Qp value (0-63)#======== Profile, Level, Tier ================--Profile [auto] profile (auto, main_10, main_10_still_picture)--Level [auto] level limit (auto, 1.0, 2.0,2.1, 3.0,3.1, 4.0,4.1, 5.0,5.1,5.2, 6.0,6.1,6.2,6.3,15.5)--Tier [main] tier for interpretation of level (main, high)#======== VUI and SEI options ================--Sdr [off] set SDR mode + BT.709, BT.2020, BT.470 color space. use: off, sdr|sdr_709,sdr_2020, sdr_470bg--Hdr [off] set HDR mode + BT.709 or BT.2020 color space (+SEI messages for hlg) If maxcll ormasteringdisplay is set, HDR10/PQ is enabled. use: off, pq|hdr10,pq_2020|hdr10_2020, hlg, hlg_2020
admin@bogon release-static % ./vvencapp
vvencapp: VVenC, the Fraunhofer H.266/VVC Encoder, version 1.12.0 [Mac OS X][clang 15.0.0][64 bit][SIMD=NEON]#======== General Options ================-h, --help [0] show default help--fullhelp [0] show full help-v, --verbosity [info] verbosity level (0: silent, 1: error, 2: warning, 3: info, 4: notice, 5: verbose, 6:debug)--stats [1] enable or disable printing of statistics (fps, bitrate, estimation of encoding time)--version [0] show version #======== Input Options ================-i, --input [] original YUV input file name or '-' for reading from stdin-s, --size [1920x1080] specify input resolution (WidthxHeight)-c, --format [yuv420] set input format (yuv420, yuv420_10, yuv420_10_packed, yuv400 (gray), yuv400_10(gray10)-r, --framerate [60] temporal rate (framerate numerator) e.g. 25,30, 30000, 50,60, 60000 --framescale [1] temporal scale (framerate denominator) e.g. 1, 1001 --fps [60/1] framerate as int or fraction (num/denom) --tickspersec [27000000] ticks per second for dts generation, (1..27000000, -1: ticks per frame=1)-f, --frames [0] max. frames to encode [all]-fs, --frameskip [0] number of frames to skip at start of input YUV [off]--segment [off] when encoding multiple separate segments, specify segment position to enable segment concatenation (first, mid, last) [off]first: first segment mid : all segments between first and last segmentlast : last segment#======== Output Options ================-o, --output [] bitstream output file name#======== Encoder Options ================--preset [medium] preset for detailed parameter configuration (faster, fast, medium, slow, slower,medium_lowDecEnergy)-b, --bitrate [0] bitrate for rate control (0: constant-QP encoding without rate control; otherwisebits/second; use e.g. 1.5M, 1.5Mbps, 1500k, 1500kbps, 1500000bps, 1500000)-m, --maxrate [0] approximate maximum instantaneous bitrate for constrained VBR in rate control (0:no rate cap; use e.g. 3.5M, 3.5Mbps, 3500k, 3500kbps, 3500000bps, 3500000), usesuffix 'x' to specify as a multiple of target bitrate-p, --passes [-1] number of encoding passes with rate control (1: single-pass, -1, 2: two-pass RC)--pass [-1] rate control pass for two-pass rate control (-1: both, 1: first, 2: second pass)--rcstatsfile [] rate control statistics file name-q, --qp [-1] quantization parameter, QP (0, 1, .. 63)--qpa [on] enable perceptually motivated QP adaptation based on XPSNR model (0: off, 1: on)-t, --threads [-1] number of threads (multithreading; -1: resolution < 720p: 4, < 5K 2880p: 8, >= 5K2880p: 12 threads)--mtprofile [auto] set automatic multi-threading setting (-1: auto, 0: off, 1,2,3: on, enables tiles,IFP and WPP automatically depending on the number of threads)--ifp [auto] inter-frame parallelization(IFP) (-1: auto, 0: off, 1: on, with sync. offset of twoCTU lines)-rt, --refreshtype [cra] intra refresh type (idr, cra, cra_cre: CRA, constrained RASL picture encoding, none, rpsei: Recovery Point SEI,idr_no_radl: IDR, without leading pictures, use for DASH)-rs, --refreshsec [1] intra period/refresh in seconds-ip, --intraperiod [0] intra period in frames (0: specify intra period in seconds instead, see -refreshsec)--tiles [-1x-1] number of tile columns and rows#======== Profile, Level, Tier ================--profile [auto] profile (auto, main_10, main_10_still_picture)--level [auto] level limit (auto, 1.0, 2.0,2.1, 3.0,3.1, 4.0,4.1, 5.0,5.1,5.2, 6.0,6.1,6.2,6.3,15.5)--tier [main] tier for interpretation of level (main, high)#======== HDR/SDR and Color Options ================--sdr [off] set SDR mode + BT.709, BT.2020, BT.470 color space. use: off, sdr|sdr_709, sdr_2020,sdr_470bg--hdr [off] set HDR mode + BT.709 or BT.2020 color space (+ SEI messages for hlg) use: off,pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020
- 编码命令:
./vvencapp -i Cactus_1920x1080_50.yuv --Size 1920x1080 -r 15 --threads 4 --preset faster --output out.h266
admin@bogon release-static % ./vvencapp -i Cactus_1920x1080_50.yuv --Size 1920x1080 -r 15 --threads 4 --preset faster --output out.h266
vvencapp: VVenC, the Fraunhofer H.266/VVC Encoder, version 1.12.0 [Mac OS X][clang 15.0.0][64 bit][SIMD=NEON]
vvenc [info]: Input File : Cactus_1920x1080_50.yuv
vvenc [info]: Bitstream File : out.h266
vvenc [info]: Real Format : 1920x1080 yuv420p 15 Hz SDR 500 frames
vvenc [info]: Frames : encode 500 frames
vvenc [info]: Internal format : 1920x1080 15 Hz SDR
vvenc [info]: Threads : 4 (parallel frames: 4)
vvenc [info]: Rate control : QP 32
vvenc [info]: Perceptual optimization : Enabled
vvenc [info]: Intra period (keyframe) : 16
vvenc [info]: Decoding refresh type : CRAvvenc [info]: stats: 100.0% frame= 500/500 fps= 14.0 avg_fps= 14.0 bitrate= 921.63 kbps avg_bitrate= 921.63 kbps elapsed= 00h:00m:36s left= 00h:00m:00s
vvenc [info]: stats summary: frame= 500/500 avg_fps= 14.0 avg_bitrate= 921.63 kbps
vvenc [info]: stats summary: frame I: 31, kbps: 10668.23, AvgQP: 27.45
vvenc [info]: stats summary: frame P: 0, kbps: nan, AvgQP: nan
vvenc [info]: stats summary: frame B: 469, kbps: 277.40, AvgQP: 39.00vvenc [info]: Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR
vvenc [info]: 500 a 921.6324 34.7893 38.8460 41.1811 35.8816
vvencapp [info]: Total Time: 35.827 sec. Fps(avg): 13.956 encoded Frames 500
- 编码数据汇总:
- vvencinterfacetest:测试 vvenc 接口,无异常则返回空信息
admin@bogon release-static % ./vvencinterfacetest
- vvenclibtest:测试 vvenc 库,无异常则返回“all of 174 tests succeeded% ”
admin@bogon release-static % ./vvenclibtest all of 174 tests succeeded%
一些疑问
- 用 vvencapp 和vvenFFcapp 工具编码出来都没有 P 帧,分析命令行参数说明也没发现 P 帧的设置,用 elecard 工具分析,码流中 B 帧只有单向参考,并没有双向参考,细节和原理还需要进一步分析源码。
相关文章:

Mac 环境 VVenC 编译与编码命令行工具使用教程
VVenC VVenC 是一个开源的高效视频编码器,专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准,主要目的是提供比 HEVC 更高的压缩效率,同时保持或提高视频质量。H.266/VVC…...

如何在 Ubuntu 22.04 上部署 Nginx 并优化以应对高流量网站教程
简介 本教程将教你如何优化 Nginx,使其能够高效地处理高流量网站。 Nginx 是一个强大且高性能的 Web 服务器,以其高效处理大量并发连接的能力而闻名,这使得它成为高流量网站的流行选择。 正确优化 Nginx 可以显著提高服务器的性能࿰…...

springcloud各个组件介绍
Spring Cloud 是一系列框架的集合,它基于 Spring Boot 提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)中快速构建一些常见模式的工具。下面是对 Sprin…...

HTML5实现好看的喜庆圣诞节网站源码
HTML5实现好看的喜庆圣诞节网站源码 前言一、设计来源1.1 主界面1.2 圣诞介绍界面1.3 圣诞象征界面1.4 圣诞活动界面1.5 圣诞热度界面1.6 圣诞纪念界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的喜庆圣诞节网站源码,圣…...
《学习之道》
《学习之道》主要讲述了以下内容: 学习的原理 大脑的两种认知模式:介绍了专注模式和发散模式。专注模式适合集中精力解决具体问题、进行深度理解和记忆推理,但长时间使用易疲惫和陷入思维定式;发散模式则让大脑在更广泛的认知网…...
【Unity3D】ECS入门学习(十一)ComponentSystem、JobComponentSystem
ComponentSystem:仅支持主线程执行,不支持多线程,并且无法使用SystemBase介绍的扩展方法。 using Unity.Entities; using Unity.Transforms; using Unity.Mathematics;/// <summary> /// 仅主线程执行,不支持多线程 /// &l…...

力扣刷题:栈和队列OJ篇(上)
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 目录 1.用队列实现栈(1)题目…...

XGPT用户帮助手册
文章目录 2024 更新日志2024.12.272024.12.29 摘要 本文详细介绍了XGPT软件的功能及发展历程。XGPT是一款融合了当前最先进人工智能技术的多模态智能软件,专为国内用户优化设计。除了强大的智能问答功能外,XGPT还结合日常办公和科学研究的需求࿰…...

Oracle 数据库 dmp文件从高版本导入低版本的问题处理
当前有个需求是将oracle 19c上的数据备份恢复到oracle 11g上使用。我们通过exp命令远程进行备份,然后通过imp进行恢复时出现IMP-00010: not a valid export file, header failed verification报错。 这是数据库版本问题,在使用exp命令导出的时候使用的客…...
ShardingSphere-Proxy分表场景测试案例
快速入门文章参考:《ShardingSphereProxy:快速入门》 基于K8S部署文章参考:《基于K8s部署ShardingSphere-Proxy》 基于golang的测试用例参考:《ShardingSphere-Proxy 连接实战:从 Golang 原生 SQL 到 GORM 的应用》 背景 我们…...
学技术学英文:Tomcat的线程模型调优
导读: tomcat 线程调优关键需要理解下面这几个参数: 1. maxConnections 描述:指定服务器能够同时接受和处理的最大连接数。也就是说,服务器在任何时候都能处理的最大并发连接数。作用:限制服务器在任何给定时间点能…...
创建flutter项目遇到无法连接源的问题
Flutter 环境信息 Flutter版本: 3.19.4 (channel stable) Framework: revision 68bfaea224 (2024-03-20) Engine: revision a5c24f538d Dart: 3.3.2 DevTools: 2.31.1 项目基本信息 项目路径: D:\F\luichun 域名: www.luichun.com.cn 支持平台: android, web, windows 项目创…...

MAC系统QT图标踩坑记录
MAC系统QT图标踩坑记录 1. 准备图标1.1 方法一:下载准备好的图标1.2 方法二:自己生成图标1.2.1 准备一个png文件1.2.2 用sips生成不同大小的图片1.2.3 用iconutil生成图标文件 2. 配置图标2.1. 把图标改命成自己想要的名字,如icon.icns&#…...
TF-IDF(Term Frequency-Inverse Document Frequency)详解:原理和python实现(中英双语)
中文版 TF-IDF算法详解:理解与应用 TF-IDF(Term Frequency-Inverse Document Frequency)是信息检索与文本挖掘中常用的算法,广泛应用于搜索引擎、推荐系统以及各种文本分析领域。TF-IDF的核心思想是通过计算一个词在文档中的重要…...

【竞技宝】CS2:HLTV2024职业选手排名TOP15-xantares
北京时间2024年12月30日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP15选手为EternalFire战队的xantares选手。 选手简介 xantares是一名来自于土耳其的CS职业选手,出生于1995年,今年已经29岁。早在2012年&…...

Spring-kafka快速Demo示例
使用Spring-Kafka快速发送/接受Kafka消息示例代码,项目结构是最基础的SpringBoot结构,提前安装好Kafka,确保Kafka已经正确启动 pom.xml,根据个人情况更换springboot、java版本等 <?xml version"1.0" encoding&qu…...

客户案例:基于慧集通集成平台,打通屠宰管理系统与用友U8C 系统的全攻略
一、引言 本原型客户成立于2014年,是一家集饲草种植、肉牛养殖、精深加工、冷链物流、餐饮服务于一体的大型农牧综合体。公司下设三个子公司分别涵盖农业、畜牧业、肉制品加工业与餐饮物流服务业。公司严格按照一二三产业融合发展要求,以肉牛产业化为支…...

模型 九屏幕分析法
系列文章 分享 模型,了解更多👉 模型_思维模型目录。九屏幕法:全方位分析问题的系统工具。 1 九屏幕分析法的应用 1.1 新产品研发的市场分析 一家科技公司计划开发一款新型智能手机,为了全面评估市场潜力和风险,他们…...

Qanything 2.0源码解析系列6 PDF解析逻辑
Qanything 2.0源码解析系列6: PDF解析逻辑 type: Post status: Published date: 2024/12/04 summary: 深入剖析Qanything是如何拆解PDF的,核心是pdf转markdown category: 技术分享 原文:www.feifeixu.top 😀 前言: 在前面的文章中探究了图片是怎么进行解析的,这篇文章对…...

MAC系统QT Creator的快捷键
安装好QT Creator后使用了一段时间,真是越用越难受,只想说🗑️。。。 找一圈qt creator的快捷键 0. 快捷键界面 这里的搜索真的是…无语,不考虑是人查找吗?? 1. 代码前后浏览 2. 移动代码 3. 半自动导入…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...