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

  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 帧只有单向参考,并没有双向参考,细节和原理还需要进一步分析源码。
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wx016基于springboot+vue+uniapp的超市购物系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

RTC:实时时钟

RTC&#xff1a;实时时钟 1、实时时钟2、闹钟中断3、秒中断4、输出功能5、BKP的读写6、BKP的侵入事件 1、实时时钟 ①RTC.c #include "RTC.h"/*** brief&#xff1a;RTC初始化函数*/ RCC_PeriphCLKInitTypeDef RTCPeriphClkInit; //RTC时钟配置结构体 RTC_HandleT…

黑马JavaWeb开发跟学(十五).Maven高级

黑马JavaWeb开发跟学.十五.Maven高级 Maven高级1. 分模块设计与开发1.1 介绍1.2 实践1.2.1 分析1.2.2 实现 1.3 总结 2. 继承与聚合2.1 继承2.1.1 继承关系2.1.1.1 思路分析2.1.1.2 实现 2.1.2 版本锁定2.1.2.1 场景2.1.2.2 介绍2.1.2.3 实现2.1.2.4 属性配置 2.2 聚合2.2.1 介…

cka考试-03-k8s版本升级

一、原题 二、解答 [root@master ~]# kubectl get node NAME STATUS ROLES AGE VERSION master Ready control-plane,master 25h v1.22.12 node1 Ready worker 25h v1.22.12 node2 Ready worker …

【Java项目】基于SpringBoot的【垃圾分类系统】

【Java项目】基于SpringBoot的【垃圾分类系统】 技术简介&#xff1a;本系统使用采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;使用者分为管理员和用户、垃圾分类管理员&#xff0c;实现功能包括管理员&#xff1a;首页、个人中心、用户管理、…

文本区域提取和分析——Python版本

目录 1. 图像预处理 2. 文本区域提取 3. 文本行分割 4. 文本区域分析 5. 应用举例 总结 文本区域提取和分析是计算机视觉中的重要任务&#xff0c;尤其在光学字符识别&#xff08;OCR&#xff09;系统、文档分析、自动化数据录入等应用中有广泛的应用。其目标是从图像中提…

华为的数字化转型框架和数字化转型成熟度评估方法

2016年&#xff0c;华为公司数字化转型变革规划汇报通过&#xff0c;一系列的变革项目由变革指导委员会(Executive Steering Committee,ESC)完成立项。8年多来&#xff0c;华为数字化转型工作初步取得了一些成果&#xff0c;比如&#xff1a; 实现“销售收入翻番&#xff0c;但…

算法 Class 006(二分搜索)

一、查找一个数 在一个有序数组中查找数字&#xff0c;每次一循环可 砍掉一半的值&#xff0c;只要确定了 arr[mid] 与 num 之间的关系。 大于num 忽略掉 mid及右边的数字 小于 num 忽略掉 mid 及左边的数字 二、 找大于等于 num 的最左位置 意思就是该下标及右边的数都是大于…

【工具整理】WIN换MAC机器使用工具整理

最近公司电脑升级&#xff0c;研发同学统一更换了 Mac Book Pro 笔记版电脑&#xff0c;整理一下安装了那些软件以及出处&#xff0c;分享记录下&#xff5e; 知识库工具 1、语雀 网址&#xff1a;语雀&#xff0c;为每一个人提供优秀的文档和知识库工具 语雀 个人花园&…

EdgeX规则引擎eKuiper

EdgeX 规则引擎eKuiper 一、架构设计 LF Edge eKuiper 是物联网数据分析和流式计算引擎。它是一个通用的边缘计算服务或中间件,为资源有限的边缘网关或设备而设计。 eKuiper 采用 Go 语言编写,其架构如下图所示: eKuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源…

Python脚本实现通过Vector VN1630A CAN盒子与ECU通信

1 安装 python-can 包 安装命令如下&#xff1a; pip install python-can安装完成后可用下面命令查看是否安装成功及版本。 pip show python-canName: python-can Version: 4.4.2 Summary: Controller Area Network interface module for Python Home-page: https://github.…

职场常用Excel基础04-二维表转换

大家好&#xff0c;今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中&#xff0c;二维表&#xff08;也称为矩阵或表格&#xff09;是一种组织数据的方式&#xff0c;其中数据按照行和列的格式进行排列。然而&#xff0c;在实际的数据分析过程中&#xff0c;我们常…

编程利器豆包MarsCode它来了

你在使用vsCode进行编写代码时是否遇到代码错误不知道如何修改&#xff1f;是否遇到代码复杂不知道逻辑业务&#xff1f;是否遇到只有思路不知道如何写出代码的情况&#xff1f; 现在&#xff0c;一款代码助手神器它来了&#xff0c;有了它&#xff0c;上面的问题和烦恼统统秒…

idea( 2022.3.2)打包报错总结

一 报错 class lombok.javac.apt.LombokProcessor (in unnamed module 0x4fe64d23) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing …

戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?

BIOS&#xff08;基本输入输出系统&#xff09;是计算机硬件与操作系统之间的桥梁&#xff0c;它负责初始化和测试系统硬件组件&#xff0c;并加载启动操作系统。在某些情况下&#xff0c;如调整启动顺序、更改系统时间或日期、修改硬件配置等&#xff0c;您可能需要进入BIOS进…

小程序组件 —— 25 组件案例 - 商品导航区域

这一节主要实现商品导航区的结构和样式&#xff0c;商品导航区没有新的知识点&#xff0c;主要使用之前学习的三个组件&#xff1a; view&#xff1a;视图容器iamge&#xff1a;图片组件text&#xff1a;文本组件 商品导航区由五个商品导航来组成&#xff0c;每一个视频导航都…

数据结构(ing)

学习内容 指针 指针的定义&#xff1a; 指针是一种变量&#xff0c;它的值为另一个变量的地址&#xff0c;即内存地址。 指针在内存中也是要占据位置的。 指针类型&#xff1a; 指针的值用来存储内存地址&#xff0c;指针的类型表示该地址所指向的数据类型并告诉编译器如何解…

Vue 中el-table-column 进行循环,页面没渲染成功

文章目录 前言效果图代码示例可能出现的问题及原因解决思路 前言 实现效果&#xff1a;el-table-column 进行循环&#xff0c;使之代码简化 遇到的问题&#xff1a; data进行默认赋值&#xff0c;操作列的删除都可以出来&#xff0c;其他表格里面的数据没出来 效果图 示例&am…

OpenGL入门最后一章观察矩阵(照相机)

前面的一篇文章笔者向大家介绍了模型变化矩阵&#xff0c;投影矩阵。现在只剩下最后一个观察矩阵没有和大家讲了。此片文章就为大家介绍OpenGL入门篇的最后一个内容。 观察矩阵 前面的篇章当中&#xff0c;我们看到了即使没有观察矩阵&#xff0c;我们也能对绘制出来的模型有一…

教程:从pycharm基于anaconda构建机器学习环境并运行第一个 Python 文件

1. 安装 PyCharm 访问 PyCharm 官方网站&#xff1a;https://www.jetbrains.com/pycharm/。下载社区版&#xff08;免费&#xff09;或专业版&#xff08;收费&#xff0c;提供更多功能&#xff09;。按照操作系统的安装指导安装 PyCharm。安装后打开 PyCharm&#xff0c;并根…