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…...
WebRTC:实现浏览器与移动应用的实时通信
1.技术简介 (Web Real-Time)是一种开放式实时通信技术,旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输,而无需安装插件或额外软件。它支持网络应用中的点对点通信,例如视频聊天、语音通话…...
curl+openssl 踩坑笔记
curl编译:点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …...
【NebulaGraph】变化的多跳查询
【NebulaGraph】变化的多跳查询 1. 需求2. 解决方案2.1 确定查询结构2.2 构建查询语句 3. 追加需求:如果增加每一跳都要指定查询某SPACE下的Tag,或者不查询某个Tag怎么办 1. 需求 存在多跳请求,其中每一跳是从上一跳查询结果为基础的。但是 …...
【C++】九九乘法表编程题详解与多角度对比分析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目概述题目描述 💯老师的实现方法代码解析优点不足 💯我的实现方法代码解析优点不足 💯实现方法对比💯优化与扩展代码优化…...
node.js卸载并重新安装(超详细图文步骤)
卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样,总之是找到自己的nodejs安装路径,下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…...
redis的集群模式与ELK基础
一、redis的集群模式 1.主从复制 (1)概述 主从模式:这是redis高可用的基础,哨兵和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的,主负责写入,然后把写入的数据同步到从服务器ÿ…...
一份关于 Ubuntu 系统下代理配置的故障排查笔记
Ubuntu 网络代理配置与故障排查指南 在使用 Ubuntu 系统时,配置网络代理可以帮助提升网络访问速度或突破网络限制。然而,代理配置过程中可能会遇到各种问题。本文将详细介绍如何在 Ubuntu 下配置网络代理,并提供故障排查的步骤和解决方案。 …...
如何用jmeter工具进行性能测试
前言 今天我们来说说jmeter如何进行性能测试,我们都知道jmeter工具除了可以进行接口功能测试外,还可以进行性能测试。当项目趋于稳定,根据性能需求就可以着手准备性能测试了,今天就说一说jmeter如何进行性能测试,jmet…...
五、Vue 循环语句
文章目录 简介一、基础数组迭代二、对象属性迭代三、整数循环 简介 在 Vue.js 的世界里,当我们需要处理重复性的结构并依据数据动态渲染时,v-for 指令就成了不可或缺的工具,它赋予开发者简洁且强大的能力,轻松应对各种列表渲染场景…...
HMSC联合物种分布模型
联合物种分布模型(Joint Species Distribution Modelling,JSDM)在生态学领域,特别是群落生态学中发展最为迅速,Hmsc是物种群落分层模型的缩写(Hierarchical Modelling of Species Communities),它是一种基于…...
【CPU】risc-v指令集和其他指令集的差别(个人草稿)
第三,在 RISC-V 中对于所有指令,要读写的寄存器的标识符总是在同一位置,意味着在解码指令之前,就可以先开始访问寄存器。在许多其他的 ISA 中,某些指令字段在部分指令中被重用作为源目的地,在其他指令中又被…...
处理元素卡在视野边界,滚动到视野内
效果图如下: 本示例处理场景:点击底部的折叠面板,展开后移动端滚动条位置不变,导致展开内容在视图外。造成面板展开无内容的错觉。 处理核心API: IntersectionObserver 此API可绑定元素并监听元素是否在视野内。若在视野外…...
环,域,体,整区,理想,极大理想,
环: 定义: 加法交换群 乘法半群 分配律 域的定义: 加法交换群 乘法群(去掉0元是交换群) 分配律 Eg:比如整数集合不是域,因为对于乘法来说,去掉0后没有单位元了,但是是环 Eg…...
音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...
大模型—Ollama 结构化输出
Ollama 结构化输出 Ollama现在支持结构化输出,使得可以按照由JSON模式定义的特定格式来约束模型的输出。Ollama的Python和JavaScript库已经更新,以支持结构化输出。 结构化输出的用例包括: 从文档中解析数据从图像中提取数据结构化所有语言模型响应比JSON模式更可靠和一致开…...
基于Pytorch和yolov8n手搓安全帽目标检测的全过程
一.背景 还是之前的主题,使用开源软件为公司搭建安全管理平台,从视觉模型识别安全帽开始。主要参考学习了开源项目 https://github.com/jomarkow/Safety-Helmet-Detection,我是从运行、训练、标注倒过来学习的。由于工作原因,抽空…...
数据结构与算法基础(C语言版)
参考资料:https://www.bilibili.com/video/BV1GW421A7qY/ 所有代码均已在Ubuntu 20.04.6 LTS中测试通过 逻辑结构与存储结构 逻辑结构 逻辑结构指的是数据对象中数据元素间的相互关系,分为以下四种: 集合结构 集合结构中的数据元素除了同属于…...
Qt监控系统放大招/历经十几年迭代完善/多屏幕辅屏预览/多层级设备树/网络登录和回放
一、前言说明 近期对视频监控系统做了比较大的更新升级,主要就是三点,第一点就是增加了辅屏预览,这个也是好多个客户需要的功能,海康的iVMS-4200客户端就有这个功能,方便在多个屏幕打开不同的视频进行查看,…...
使用Locust对MySQL进行负载测试
1.安装环境 pip install locust mysql-connector-python 2.设置测试环境 打开MySQL服务 打开Navicat新建查询,输入SQL语句 3.编写locust脚本 load_mysql.py # codingutf-8 from locust import User, TaskSet, task, between import mysql.connector import ran…...
layui多图上传,tp8后端接收处理
环境:layui2.9.21\thinkphp8.1 前端代码: layui.use([upload, layer], function() {const upload layui.upload;const layer layui.layer;const $ layui.$;// 上传图片const uploadInstImage upload.render({elem: #uploadImage,url: /admin/demo/…...
【Rust自学】8.3. String类型 Pt.1:字符串的创建、更新与拼接
8.3.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…...
Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1)
本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 为了在ESP32-S3中使用ESP-IDF,需要根据操作系统安装一些软件包。可以参考以下安…...
Android性能优化—— 内存优化
Android 系统中,垃圾回收是自动的,比较隐蔽,这就导致一些内存问题表现的并不明显,出现问题后难以定位。常见的内存问题有内存泄漏、内存溢出(Out of Memory)、内存抖动等。 我们做内存优化的主要原因有以下…...
【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算
【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算 一、简介 在MATLAB中计算Sobol二阶效应指数通常涉及到全局敏感性分析(Global Sensitivity Analysis, GSA),其中Sobol方法是一种流行的技术,用于评估模型输入…...
【Scala】图书项目系统代码演练3.1/BookService
package org.app package serviceimport models.{BookModel, BorrowRecordModel}import org.app.dao.{BookDAO, BorrowRecordDAO}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookService {private val bookDAO new B…...
Gateway
目录 使用 工作机制 Predicate断言 Filter过滤器(鉴权) GatewayFilter GlobalFilter 使用 Gateway底层是使用Ribbon来实现负载均衡的 新建模块,端口5001 1、引入依赖 spring-boot-starter-web里存在tomcat,spring-cloud-st…...
SpringSecurity中的过滤器链与自定义过滤器
关于 Spring Security 框架中的过滤器的使用方法,系列文章: 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity使用过滤器实现图形验证码》 1、Spring Security 中的过滤器链 Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过…...
【OTA】论文学习笔记--《基于RTOS的车载ECU双分区OTA升级技术分析报告》
引言 研究背景 - 汽车智能化、网联化发展趋势下,OTA升级已成为智能网联汽车的必备功能 - 传统RTOS控制器在OTA升级失败后无法进行软件回滚,导致控制器功能失效 - 现有技术主要针对Linux、QNX等智能操作系统,缺乏针对RTOS的解决方案 研究目的 提出一种适用于RTOS控制器的双分…...
MLA:多头潜在注意力
MLA:多头潜在注意力 多头潜在注意力(MLA)机制是一种在深度学习模型中用于处理序列数据的注意力机制的改进形式,以下是对其原理和示例的详细介绍: 原理 低秩键值联合压缩:MLA机制利用低秩键值联合压缩来消除注意力模块中的某些计算,从而提高模型的运行速度和性能。在传…...
【python】matplotlib(moon cake)
文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…...
C++ hashtable
文章目录 1. 基本概念2. 哈希函数3. 哈希冲突及解决方法开放定址法链地址法再哈希法建立公共溢出区4. 哈希表的操作实现5. 内存管理及优化 时间复杂度理想情况(无哈希冲突或冲突极少)一般情况(考虑哈希冲突及解决方法)综合来看 以…...
ip怎么查域名?IP和域名分别是什么?
为什么我们可以通过简单的域名访问网站,而不是记住一串复杂的数字?IP地址和域名之间到底是什么关系?在互联网的世界里,IP地址和域名是两种重要的概念,它们共同构成了我们日常上网的基础。 IP地址是互联网协议地址的缩…...
大模型提示词初探
大模型提示词初探 在与大模型交互的过程中,提示词起着至关重要的作用,它犹如给模型下达的精准任务指令,直接影响着模型生成内容的准确性、高效性与合理性。合理运用提示词,能够有效减少模型出现错误和幻觉的情况,从而…...
Linux的进程替换以及基础IO
进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系,那么我们接下来了解一下程序的替换。 首先,在进程部分我们提过了,其实文件可以在运行时变成进程,而我们使用的Linux软件其实也是一个进程,所以进一步…...
《Vue进阶教程》第三十一课:ref的初步实现
往期内容: 《Vue进阶教程》第二十课:lazy懒执行 《Vue进阶教程》第二十一课:支持缓存 《Vue进阶教程》第二十二课:自定义更新(调度器) 《Vue进阶教程》第二十三课:渲染计算属性的结果 《Vue进阶教程》第二十四课&…...
Wend看源码-Java-集合学习(Queue)
概述 Wend看源码-Java-集合学习(List)-CSDN博客 Wend看源码-Java-集合学习(Set)-CSDN博客 在前两篇文章中,我们分别探讨了Java集合框架的父类以及List集合和Set集合的实现。接下来,本文将重点阐述Java中的Queue集合,包括其内部的数据结…...
大数据面试笔试宝典之HBase面试
1.HBase 数据存储位置 HBase 中的数据存储在哪里? 以什么格式存储?和 Zookeeper 什么关系? 参考答案: 1.HBase 中的所有数据文件都存储在 Hadoop HDFS 文件系统上。 2.包含两种文件类型: HFile : HBase 中 KeyValue 数据的存储格式。HFile 是 Hadoop 的二进制格式文件…...
React基础知识学习
学习React前端框架是一个系统而深入的过程,以下是一份详细的学习指南: 一、React基础知识 React简介 React是一个用于构建用户界面的JavaScript库,由Facebook开发和维护。它强调组件化和声明式编程,使得构建复杂的用户界面变得更…...
实战指南:Shiro、CAS打造完美单点登录体验
引言 想象一下,在日常工作中,我们经常需要进行系统认证和授权。当用户尝试登录一个网站时,他们需要提供用户名和密码,网站会检查这些信息,确认用户是谁。这就是认证的过程。 一旦用户被认证,他们可能会尝…...
光储充一体化解决方案详解。
一、光储充介绍 1、什么是光储充 “光储充”一体化,顾名思义,是由光伏发电、储能、充电集成一体、互相协调支撑的绿色充电模式。其工作原理是利用光伏发电,余电由储能设备存储,共同承担供电充电任务。在用电高峰,光储…...
TDengine 新功能 VARBINARY 数据类型
1. 背景 VARBINARY 数据类型用于存储二进制数据,与 MySQL 中的 VARBINARY 数据类型功能相同,VARBINARY 数据类型长度可变,在创建表时指定最大字节长度,使用进按需分配存储,但不能超过建表时指定的最大值。 2. 功能说明…...
2024年秋词法分析作业(满分25分)
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格…...
AF3 checkpoint_blocks函数解读
checkpoint_blocks 函数实现了一种分块梯度检查点机制 (checkpoint_blocks),目的是通过分块(chunking)执行神经网络模块,减少内存使用。在深度学习训练中,梯度检查点(activation checkpointing)是一种显存优化技术。该代码可以: 对神经网络的块(blocks)按需分块,并对…...
VITUREMEIG | AR眼镜 算力增程
根据IDC发布的《2024年第三季度美国AR/VR市场报告》显示,美国市场AR/VR总出货量增长10.3%。其中,成立于2021年的VITURE增长速度令人惊艳,同比暴涨452.6%,成为历史上增长最快的AR/VR品牌。并在美国AR领域占据了超过50%的市场份额&a…...
详解MySQL在Windows上的安装
目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网,找到DOWNLOADS 然后往下翻,找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载,选择No thanks,just start my download. 然后双击进行…...
细说STM32F407单片机CAN基础知识及其HAL驱动程序
目录 一、CAN总线结构和传输协议 1、 CAN总线结构 (1)闭环结构的CAN总线网络 (2)开环结构的CAN总线网络 (3)隐性电平和显性电平 2、CAN总线传输协议 (1)CAN总线传输特点 &am…...
Ubuntu 22.04 升级 24.04 问题记录
一台闲置笔记本使用的 ubuntu 还是 18.04,最近重新使用,发现版本过低,决定升级,于是完成了 18.04 -> 20.04 -> 22. 04 -> 24.04 的三连跳。 一、升级过程中黑屏 主要问题是在 22.04 升级到 24.04 过程中出现了黑屏仅剩…...
模型选择+过拟合欠拟合
训练误差和泛化误差 训练误差:模型在训练数据上的误差 泛化误差:模型在新数据上的误差 验证数据集:一个用来评估模型好坏的数据集 例如拿出50%的数据作为训练 测试数据集:只能用一次 K则交叉验证 在没有足够数据时使用 算法…...
Leetcode 3404. Count Special Subsequences
Leetcode 3404. Count Special Subsequences 1. 解题思路2. 代码实现 题目链接:3404. Count Special Subsequences 1. 解题思路 这道题是事实上这次的周赛最难的一道题目,不过也是有点巧思在内。 最开始我的想法就是按照乘积构成pair,然后…...