Mac 环境 VVenC 编译与编码命令行工具使用教程

news2025/1/4 0:25:45

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 编译

  1. 源码下载:https://github.com/fraunhoferhhi/vvenc
  2. 编译:比较简单,按照 README中用 CMake 编译即可。
mkdir build
cd build
cmake ..
make
  1. 编译后文件:
    • bin/release-static:vvencFFapp、vvencapp、vvencinterfacetest、vvenclibtest
    • include/vvenc:vvenc.h、vvencCfg.h、vvencDecl.h
    • lib/release-static:libvvenc.a

编码工具使用

  1. 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 encoding
                                     time)
        --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 when
                                     splitting the video into overlapping segments
        --TrailFrames [0]            Number of trailing frames to be read after frames to be encoded, use when splitting
                                     the 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 segment
                                      last : 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, >= 5K
                                     2880p: 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 delay
                                     requirements
        --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 rate
                                     cap; 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 or
                                     masteringdisplay 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                    : 0

vvenc [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.93


vvenc [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.6601

vvencFFapp [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
  • 编码数据汇总:
    在这里插入图片描述
  1. 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 encoding
                                     time)
        --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 when
                                     splitting the video into overlapping segments
        --TrailFrames [0]            Number of trailing frames to be read after frames to be encoded, use when splitting
                                     the 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 segment
                                      last : 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, >= 5K
                                     2880p: 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 delay
                                     requirements
        --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 rate
                                     cap; 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 or
                                     masteringdisplay 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 segment
                                    last : 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; otherwise
                                   bits/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), use
                                   suffix '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, >= 5K
                                   2880p: 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 two
                                   CTU 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                  : CRA

vvenc [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.00


vvenc [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
  • 编码数据汇总:
    在这里插入图片描述
  1. vvencinterfacetest:测试 vvenc 接口,无异常则返回空信息
admin@bogon release-static % ./vvencinterfacetest
  1. vvenclibtest:测试 vvenc 库,无异常则返回“all of 174 tests succeeded% ”
admin@bogon release-static % ./vvenclibtest 


 all of 174 tests succeeded%  

一些疑问

  1. 用 vvencapp 和vvenFFcapp 工具编码出来都没有 P 帧,分析命令行参数说明也没发现 P 帧的设置,用 elecard 工具分析,码流中 B 帧只有单向参考,并没有双向参考,细节和原理还需要进一步分析源码。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML——41有序列表

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>有序列表</title></head><body><!--有序列表&#xff1a;--><!--1.列表中各个元素在逻辑上有先后顺序&#xff0c;但不存在一定的级别关系-->…

详细教程:SQL2008数据库备份与还原全流程!

数据的安全性至关重要&#xff0c;无论是操作系统、重要文件、磁盘存储&#xff0c;还是企业数据库&#xff0c;备份都是保障其安全和完整性的关键手段。拥有备份意味着即使发生误删、系统崩溃或病毒攻击等问题&#xff0c;也能迅速通过恢复功能解决&#xff0c;避免数据丢失带…

IDEA工具使用介绍、IDEA常用设置以及如何集成Git版本控制工具

文章目录 一、IDEA二、建立第一个 Java 程序三、IDEA 常用设置四、IDEA 集成版本控制工具&#xff08;Git、GitHub&#xff09;4.1 IDEA 拉 GitHub/Git 项目4.2 IDEA 上传 项目到 Git4.3 更新提交命令 一、IDEA 1、什么是IDEA&#xff1f; IDEA&#xff0c;全称为 IntelliJ ID…

STM32 I2C通信协议

单片机学习&#xff01; 文章目录 目录 文章目录 前言 一、I2C通信 1.1 I2C总线 1.2 I2C通信线 1.3 同步半双工且数据应答 1.4 一主多从 二、硬件电路 2.1 I2C电路模型 2.2 I2C接线要求 2.3 I2C上拉电阻作用 三、I2C时序基本单元 3.1 起始终止条件 3.1.1 起始条件 3.1.2 终止条…

在线免费批量生成 Word 文档工具

为了方便的批量生成 Word 文档&#xff0c;写了个在线 Word 文档批量生成工具&#xff0c;可以根据 Excel 数据和 Word 模板批量生成大量个性化的 Word 文档。适用于需要批量生成格式统一但内容不同的文档场景。比如&#xff1a; 批量生成证书、奖状批量生成合同、协议批量生成…

再见了我的2024

目录 户外运动 阅读及影视剧欣赏 提升专业技能 外婆走了 消费分析 小妹家的二宝 2024 summary 2025年几个小目标 2024生活记录 2024年最后一天&#xff0c;就这样过去了。 总是来不及好好地告个别&#xff0c;就像我们的年老的亲人一样&#xff0c;见一面&#xff0c;少…

Java工程师实现视频文件上传minio文件系统存储及网页实现分批加载视频播放

Java工程师实现minio存储大型视频文件网页实现分批加载视频播放 一、需求说明 老板给我出个题目&#xff0c;让我把的电影文件上传到minio文件系统&#xff0c;再通过WEB端分配加载视频播放&#xff0c;类似于我们普通的电影网站。小编把Java代码共享出来。是真正的能拿过来直…

Three.js教程004:坐标辅助器与轨道控制器

文章目录 坐标辅助器与轨道控制器实现效果添加坐标辅助器添加轨道控制器完整代码完整代码下载坐标辅助器与轨道控制器 实现效果 添加坐标辅助器 创建坐标辅助器: const axesHelper = new Three.AxesHelper(5);添加到场景中: scene.

【优选算法 分治】深入理解分治算法:分治算法入门小专题详解

快速排序算法 (1) 快速排序法 (2) 快排前后指针 (3) 快排挖坑法 颜色分类 题目解析 算法原理 算法原理和移动零非常相似 简述移动零的算法原理 cur 在从前往后扫描的过程中&#xff0c;如果扫描的数符合 f 性质&#xff0c;就把这个数放到 dest 之…

Qt5 中 QGroupBox 标题下沉问题解决

我们设置了QGroupBox 样式之后,发现标题下沉了,那么如何解决呢? QGroupBox {font: 12pt "微软雅黑";color:white;border:1px solid white;border-radius:6px; } 解决后的效果 下面是解决方法: QGroupBox {font: 12pt "微软雅黑";color:white;bo…

sentinel-请求限流、线程隔离、本地回调、熔断

请求限流&#xff1a;控制QPS来达到限流的目的 线程隔离&#xff1a;控制线程数量来达到限流的目录 本地回调&#xff1a;当线程被限流、隔离、熔断之后、就不会发起远程调用、而是使用本地已经准备好的回调去提醒用户 服务熔断&#xff1a;熔断也叫断路器&#xff0c;当失败、…

体验Cursor一段时间后的感受和技巧

用这种LLM辅助的IDE一段时间了&#xff0c;断断续续做了几个小项目了&#xff0c;总结一下整体的感受和自己的一些使用经验。 从Cursor开始又回到Cursor 第一个真正开始使用的LLM的辅助开发IDE就是Cursor&#xff0c;Github的Copilot支持尝试过&#xff0c;但是并没有真正的在…

【数据仓库】hadoop3.3.6 安装配置

文章目录 概述下载解压安装伪分布式模式配置hdfs配置hadoop-env.shssh免密登录模式设置初始化HDFS启动hdfs配置yarn启动yarn 概述 该文档是基于hadoop3.2.2版本升级到hadoop3.3.6版本&#xff0c;所以有些配置&#xff0c;是可以不用做的&#xff0c;下面仅记录新增操作&#…

宽带、光猫、路由器、WiFi、光纤之间的关系

1、宽带&#xff08;Broadband&#xff09; 1.1 宽带的定义宽带指的是一种高速互联网接入技术&#xff0c;通常包括ADSL、光纤、4G/5G等不同类型的接入方式。宽带的关键特点是能够提供较高的数据传输速率&#xff0c;使得用户可以享受到稳定的上网体验。 1.2 宽带的作用宽带是…

[2025] 如何在 Windows 计算机上轻松越狱 IOS 设备

笔记 1. 首次启动越狱工具时&#xff0c;会提示您安装驱动程序。单击“是”确认安装&#xff0c;然后再次运行越狱工具。 2. 对于Apple 6s-7P和iPad系列&#xff08;iOS14.4及以上&#xff09;&#xff0c;您应该点击“Optinos”并勾选“允许未经测试的iOS/iPadOS/tvOS版本”&…

Linux SVN下载安装配置客户端

参考&#xff1a; linux下svn服务器搭建及使用&#xff08;包含图解&#xff09;_小乌龟svn新建用户名和密码-CSDN博客 1.ubuntu安装svn客户端 “subversion” sudo apt-get update sudo apt-get install subversion 查看安装的版本信息&#xff0c;同时看是否安装成功 s…

【Windows】Windows系统查看目录中子目录占用空间大小

在对应目录下通过powershell命令查看文件夹及文件大小&#xff0c;不需要管理员权限。 以下为方式汇总&#xff1a; 方式1&#xff08;推荐&#xff0c;免费下载使用&#xff0c;界面友好&#xff09;&#xff1a; 使用工具以下是一些第三方工具treesize_free https://www.ja…

【论文阅读笔记】IceNet算法与代码 | 低照度图像增强 | IEEE | 2021.12.25

目录 1 导言 2 相关工作 A 传统方法 B 基于CNN的方法 C 交互方式 3 算法 A 交互对比度增强 1)Gamma estimation 2)颜色恢复 3)个性化初始η B 损失函数 1)交互式亮度控制损失 2)熵损失 3)平滑损失 4)总损失 C 实现细节 4 实验 5 IceNet环境配置和运行 1 下载…

L25.【LeetCode笔记】 三步问题的四种解法(含矩阵精彩解法!)

目录 1.题目 2.三种常规解法 方法1:递归做 ​编辑 方法2:改用循环做 初写的代码 提交结果 分析 修改后的代码 提交结果 for循环的其他写法 提交结果 方法3:循环数组 提交结果 3.方法4:矩阵 算法 代码实践 1.先计算矩阵n次方 2.后将矩阵n次方嵌入递推式中 提…

小白投资理财 - 看懂 PE Ratio 市盈率

小白投资理财 - 看懂 PE Ratio 市盈率 什么是 PE RatioPE 缺陷PE 优点总结 无论是在菜市还是股票市场&#xff0c;每个人都想捡便宜&#xff0c;而买股票就像市场买菜&#xff0c;必须货比三家&#xff0c;投资股票最重要就是要知道回本时间要多久&#xff0c;市场上很多时候散…