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. 半自动导入…...

【深度学习】多目标融合算法—样本Loss提权
目录 一、引言 二、样本Loss提权 2.1 技术原理 2.2 技术优缺点 三、总结 一、引言 在朴素的深度学习ctr预估模型中(如DNN),通常以一个行为为预估目标,比如通过ctr预估点击率。但实际推荐系统业务场景中,更多是多…...

C 实现植物大战僵尸(四)
C 实现植物大战僵尸(四) C 实现植物大战僵尸,完结撒花(还有个音频稍卡顿的性能问题,待有空优化解决)。目前基本的功能模块已经搭建好了,感兴趣的友友可自行尝试编写后续游戏内容 因为 C 站不能…...

Tailwind CSS:现代 CSS 框架的优雅之选
Tailwind CSS:现代 CSS 框架的优雅之选 在现代前端开发中,CSS 的灵活性和复杂性让开发者在设计与实现之间寻找平衡。而 Tailwind CSS 的出现,重新定义了 CSS 框架的使用方式。它是一种原子化的 CSS 工具库,提供了丰富的类名以快速…...

MyBatis 使用的设计模式详解
MyBatis 是一个优秀的持久层框架,它简化了 Java 应用程序与数据库之间的交互。为了实现高效、灵活且易于维护的代码,MyBatis 内部使用了多种设计模式。本文将详细介绍 MyBatis 中应用到的设计模式及其作用。 工厂模式(Factory Pattern&#x…...

LabVIEW 中 NI Vision 模块的IMAQ Create VI
IMAQ Create VI 是 LabVIEW 中 NI Vision 模块(NI Vision Development Module)的一个常用 VI,用于创建一个图像变量。该图像变量可以存储和操作图像数据,是图像处理任务的基础。 通过以上操作,IMAQ Create VI 是构建…...

2024 年度总结
时光荏苒,2024 年即将画上句号,回顾这一年的写博历程,有付出、有收获、有成长,也有诸多值得回味与反思的瞬间。 一、内容创作 主题涉猎:这一年,我致力于探索多样化的主题,以满足不同读者群体的…...

STM32 高级 物联网通讯之LoRa通讯
目录 LoRa通讯基础知识 常见的3种通讯协议 远距离高速率的传输协议 近距离高速率传输技术 近距离低功耗传输技术 低功耗广域网 采用授权频段技术 非授权频段 LoRa简介 LoRa的特点 远距离 低功耗 安全 标准化 地理定位 移动性 高性能 低成本 LoRa应用 LoRa组…...

【笔记】在虚拟机中通过apache2给一个主机上配置多个web服务器
(配置出来的web服务器又叫虚拟主机……) 下载apache2 sudo apt update sudo apt install apache2 (一)ip相同 web端口不同的web服务器 进入 /var/www/html 创建站点一和站点二的目录文件(目录文件名自定义哈&#x…...

数据库的创建与删除:理论与实践
title: 数据库的创建与删除:理论与实践 date: 2024/12/31 updated: 2024/12/31 author: cmdragon excerpt: 在当今的数字时代,数据的管理和存储变得尤为重要。数据库作为数据存储的结构化方案,为数据的增删改查提供了系统化的方法。在一个典型的数据库管理系统中,创建和…...

如何解决Eigen和CUDA版本不匹配引起的错误math_functions.hpp: No such file or directory
Apollo9针对RTX40的docker环境里的Eigen库版本是3.3.4,CUDA是11.8: 编译我们自己封装模型的某些component代码时没问题,编译一个封装occ模型的component代码时始终报错: In file included from /usr/include/eigen3/Eigen/Geometry:11:0, …...