VVenc开源编码器实战指南:H.266/VVC编码工具编译、参数调优与性能测试

【Codecs系列】H.266开源编解码器:vvenc和vvdec介绍 DATE: 2021.8.11 文章目录前言1、VVenC介绍2、VVenc和VVdec开源地址3、VVenC编译和运行命令3.1、编译方法3.2、运行命令行4、VVenC如何使用Lowdelay P配置编码? 前言 VVC(Versatile Video Coding)是由MPEG和ITU-T共同开发的最新一代视频编码标准,相比于HEVC(High Efficiency Video Coding)在相同质量下能节省50%的码率。VTM(VVC Test Model)是VVC的官方参考软件,由于VVC集成 阅读详情

引言:从理论到实践

在前一篇文章中,我们系统解析了H.266/VVC的核心编码技术。本文转向实践层面,介绍如何使用Fraunhofer HHI开发的开源VVC编码器VVenc进行实际编码操作。VVenc是目前最成熟的开源VVC编码器之一,与开源解码器VVdeC配套使用,为开发者提供了完整的VVC编解码工具链。

环境准备与编译安装

Linux系统编译

VVenc支持Linux和Windows平台,以下以Ubuntu 20.04+为例:

# 安装依赖
sudo apt-get update
sudo apt-get install cmake g++ git

# 克隆仓库
git clone https://github.com/fraunhoferhhi/vvenc.git
cd vvenc

# 创建构建目录并编译
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

编译完成后,可执行文件位于bin/目录下:

  • vvencapp:命令行编码工具
  • vvencFFapp:带完整配置选项的编码工具(推荐)

Windows系统编译

Windows下推荐使用Visual Studio 2019+:

powershell

# 使用CMake生成VS解决方案
cmake .. -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release

# 或使用预编译版本
# 直接从GitHub Releases页面下载预编译的Windows二进制文件

Docker快速体验

# 拉取预构建镜像
docker pull ghcr.io/fraunhoferhhi/vvenc

# 运行编码
docker run -v $(pwd):/data vvencapp -i /data/input.yuv -s 1920x1080 -r 60 \
  -c /data/config.cfg -o /data/output.vvc

核心编码参数解析

基础参数

vvencFFapp -i input.yuv -s 3840x2160 -r 60 -c config.cfg -o output.vvc
参数说明示例
-i输入YUV文件路径input.yuv
-s视频分辨率3840x2160
-r帧率60
-c配置文件路径config.cfg
-o输出比特流路径output.vvc
-f编码帧数300

码率控制模式

VVenc支持三种码率控制模式:

1. 固定QP(Constant QP)

--qp 32

QP值范围通常为0~51,值越小画质越高、码率越大。适合质量一致性要求高的场景。

2. 固定码率(Constant Bitrate, CBR)

--bitrate 15000
--rcTargetBitrate 15000

指定目标码率(kbps),编码器自动调整QP。适合带宽受限的流媒体场景。

3. 恒定质量(Constant Quality, CRF)

--crf 28

CRF模式下编码器根据画面复杂度动态调整码率,保持视觉质量一致。这是最推荐的模式,平衡了画质与文件大小。

编码预设(Preset)

VVenc提供从fast到veryslow的多个预设等级:

--preset medium

表格

预设编码速度压缩效率适用场景
fast最快最低实时编码、快速测试
medium中等中等日常使用
slow较慢较高高质量归档
veryslow最慢最高极致压缩、基准测试

预设本质上是一组编码工具开关和搜索范围的组合。veryslow会启用更多预测模式、更精细的划分搜索,从而获得更好的压缩效率,但编码时间显著增加。

关键编码工具开关

# QTMTT划分
--QTBT 1                    # 启用四叉树+二叉树划分

# 帧内预测
--IntraPeriod 32            # 帧内刷新周期
--GOPSize 16                # GOP大小

# 帧间预测
--Affine 1                  # 启用仿射运动补偿
--BDOF 1                    # 启用双向光流
--SBT 1                     # 启用子块变换
--GPM 1                     # 启用几何分割模式

# 变换与量化
--LFNST 1                   # 启用低频不可分离变换
--DepQuant 1                # 启用依赖量化

# 环路滤波
--SAO 1                     # 启用SAO
--ALF 1                     # 启用自适应环路滤波

# 并行编码
--WPP 1                     # 启用波前并行
--Tiles 4x2                 # 启用Tile划分(4列2行)

配置文件示例

以下是一个完整的4K 60fps编码配置示例(4k60_crf28.cfg):

# 输入输出
InputFile: input.yuv
OutputFile: output.vvc
SourceWidth: 3840
SourceHeight: 2160
FrameRate: 60
InputBitDepth: 10
InternalBitDepth: 10

# 码率控制
RateControlMode: CRF
CRF: 28

# 编码结构
IntraPeriod: 32
GOPSize: 16
DecodingRefreshType: IDR

# 预设与工具
Preset: medium
Affine: 1
BDOF: 1
SBT: 1
GPM: 1
LFNST: 1
DepQuant: 1
SAO: 1
ALF: 1

# 并行
WPP: 1
Tiles: 2x2

使用配置文件编码:

vvencFFapp -c 4k60_crf28.cfg -o output.vvc

性能测试方法

编码速度测试

# 记录编码时间
time vvencFFapp -i input.yuv -s 3840x2160 -r 60 --crf 28 \
  --preset medium -f 300 -o output.vvc

输出会显示编码帧率(fps)和总耗时。VVC编码速度通常远低于实时,medium预设下4K编码约0.5~2fps,取决于硬件配置。

码率-画质对比测试

使用vvencapp生成不同CRF值的比特流,再用vvdecap解码后用PSNR/SSIM工具对比:

# 编码不同CRF
for crf in 22 26 30 34; do
  vvencFFapp -i input.yuv -s 3840x2160 -r 60 --crf $crf \
    --preset medium -f 300 -o output_crf${crf}.vvc
done

# 解码
for f in output_crf*.vvc; do
  vvdecap -b $f -o ${f%.vvc}.yuv
done

# 计算PSNR(使用ffmpeg)
ffmpeg -i output_crf22.yuv -i input.yuv -lavfi psnr -f null -

与H.265对比

# 使用x265编码相同内容
x265 --input input.yuv --input-res 3840x2160 --fps 60 \
  --crf 28 --preset medium -o output_h265.hevc

# 对比码率与画质

典型测试结果显示,在相同主观画质下,VVC相比H.265可节省约40%~50%码率,但编码时间增加3~5倍。

解码与播放

使用VVdeC解码

# 编译VVdeC
git clone https://github.com/fraunhoferhhi/vvdec.git
cd vvdec && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

# 解码VVC比特流
vvdecap -b output.vvc -o decoded.yuv

FFmpeg集成

较新版本的FFmpeg已集成libvvdec解码支持:

# 检查FFmpeg是否支持VVC
ffmpeg -decoders | grep vvc

# 播放VVC文件(需支持VVC的播放器)
ffplay -i output.vvc

常见问题与优化建议

编码速度慢

  • 降低预设等级(medium → fast)
  • 启用Tile并行(--Tiles 4x2)
  • 减少GOP大小和帧内周期
  • 关闭部分高级工具(如BDOF、GPM)

码率波动大

  • 使用CBR模式替代CRF
  • 增大VBV缓冲(--vbvBufsize)
  • 减小GOP大小,增加帧内刷新频率

内存占用高

  • 减小Tile数量
  • 降低内部位深(--InternalBitDepth 8)
  • 限制参考帧数量(--RefPicList)

结语

VVenc为开发者提供了完整的H.266/VVC编码实践工具链。通过合理配置码率控制模式、编码预设和工具开关,可以在编码速度与压缩效率之间找到适合自身场景的平衡点。尽管VVC编码目前仍面临复杂度高的挑战,但随着硬件加速的普及和编码器优化的持续迭代,VVC正逐步走向实用化。

vvenc:弗劳恩霍夫多功能视频编码器(VVenC) 弗劳恩霍夫多功能视频编码器(VVenC) 多功能视频编码(VVC)是由ITU-T视频编码专家组(VCEG)和ISO / IEC运动图像专家组(MPEG)的联合视频专家组(JVET)开发的最新国际视频编码标准。 VVC是高效视频编码(HEVC)标准的后继产品,由ITU-T发布为H.266,由ISO / IEC发布为MPEG-I第3部分(ISO / IEC 23090-3)。 新标准的目标是在相同的视觉质量下,比HEVC降低50%的比特率。 此外,VVC通过包括在新兴应用程序中对视频内容进行有效编码的工具而被证明具有真正的通用性,例如新兴的应用程序,例如高动态范围(HDR),自适应流,计算机生成的内容以及沉浸式应用程序,例如360度视频和增强现实( AR)。 Fraunhofer多功能视频编码器(VVenC)是一种快速有效的“真实世界” VVC编码器实现,具有以下主要功能: 易于使用的编 立即下载

相关推荐

Delphi 13.2控件之FMSoft-uniGUI-HyperServer-Config-1.99.0.1616.exe

Delphi 13.2控件之FMSoft_uniGUI_HyperServer_Config_1.99.0.1616.exe

终极VVC视频编码指南:Fraunhofer VVenC完全使用手册

🎯 **在数字视频时代,高效编码技术是提升传输质量的关键**。VVC(Versatile Video Coding)作为下一代视频编码标准,相比HEVC可节省50%码率!今天我们要深入探讨的就是Fraunhofer VVenC——这个业界领先的VVC编码器实现,它能帮助你在保持卓越画质的同时大幅压缩文件体积。🚀 ## 为什么选择VVenC?五大核心优势 **VVenC**是Fraunhof

gitblog_00719的博客 1025

科技中介服务机构如何构建轻量化、易操作的数智化服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

VVenC视频编码器完整使用指南

VVenC是由弗劳恩霍夫研究所开发的下一代视频编码器,实现了最新的VVC(Versatile Video Coding)标准。这款开源编码器为开发者提供了高效的视频压缩解决方案,能够显著提升视频存储和传输效率。VVC编码技术相比传统编码标准具有更好的压缩性能,适用于流媒体、视频会议、高清视频存储等多种应用场景。 ## 环境准备与项目部署 开始使用VVenC之前,需要确保系统具备基本的开发环境。

gitblog_00404的博客 803

政府科技管理者如何提升科技成果转化政策制定的科学性与精准性?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区运营负责人如何精准识别园区内潜在可转化科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

弗劳恩霍夫HHI研究所VVENC开源项目安装与使用指南

弗劳恩霍夫赫尔曼·亥姆霍兹媒体与信息研究所(Fraunhofer HHI)的VVENC项目是专门用于视频编码的开源工具,基于Versatile Video Coding (VVC)标准。下面是该开源项目的主要目录结构及简要介绍: ```markdown vvenc/ │ ├── CMakeLists.txt - CMake构建配置文件 ├── doc/ ...

gitblog_00177的博客 528

C++开发C++ Private访问控制示例4

内容概要:本文通过一个C++类“Calculator”的具体示例,展示了private访问控制在类成员函数中的应用。重点说明了私有成员函数(如validate)只能在类内部被调用,用于实现内部逻辑校验和数据保护,而不能被外部对象直接访问。公有成员函数(如add)则负责对外提供接口,并在内部调用私有函数完成合法性检查,从而实现了封装性和安全性。该示例清晰地体现了面向对象编程中信息隐藏的核心理念。; 适合人群:具备C++基础语法知识,理解类与对象概念的初学者或中级开发者,尤其适合正在学习封装和访问控制机制的学习者。; 使用场景及目标:①理解private关键字在成员函数中的作用;②掌握私有函数作为内部辅助工具的设计方法;③学习如何通过公有接口安全地访问和操作私有数据;④深入理解类的封装机制与访问控制规则。; 阅读建议:建议结合代码实例进行编译调试,尝试将validate函数改为public或protected,观察访问权限的变化,加深对C++访问控制的理解。同时可扩展此类,增加更多私有验证逻辑以强化实践能力。

VVENC 初探究

vvenc和vvdec_Dillon2015的博客-CSDN博客 【Codecs系列】H.266开源编解码器:vvenc和vvdec介绍_飞翔的鲲的博客-CSDN博客_h266编码器 1.参考VTM安装的方法,在CMAKE里配置vvenc 2. 在VVENC根目录里建立一个build文件夹,把要测试的序列和序列CFG都放进去。在github页面有一个 进去后在命令行里配置环境。 把这些全输入一遍(没搞懂什么意思,能用就行) 4.这时候vvenc根目录中的bin里面应该有个debu..

dfhg54的博客 1302

三相四桥臂逆变器不平衡负载多准PR并联控制器仿真【参考文献+说明文档】

内容概要:本文档围绕“三相四桥臂逆变器在不平衡负载条件下的多准PR并联控制”展开系统性仿真研究,重点引入RIME优化算法对PID控制器参数进行高效整定,显著提升系统在复杂工况下的动态响应能力与运行稳定性。文档详细阐述了Simulink仿真模型的构建过程、多准PR控制策略的设计原理以及多目标优化方法的应用实现,涵盖风光火储等多种能源形式参与电网一次调频与二次AGC调频的协同控制机制。同时,深度融合“双碳”战略背景,集成碳排放交易、绿证市场、碳流追踪与碳足迹分析等低碳调度模型,体现综合能源系统多维度、多目标优化的技术前沿性。此外,文档还提供了模糊PID、RBF神经网络、PSO等多种先进控制算法的对比仿真案例,增强了研究的深度与教学参考价值。; 适合人群:适用于电气工程、自动化、新能源科学与工程及相关专业的研究生、科研人员以及从事电力电子与新能源系统控制的工程技术人员,要求具备扎实的MATLAB/Simulink仿真基础和电力系统控制理论知识。; 使用场景及目标:①开展三相四桥臂逆变器在不平衡负载工况下的并联控制策略研究;②学习并应用RIME、PSO等智能优化算法实现PID参数整定;③构建风光火储多源协同参与电网一次调频与二次AGC调频的仿真系统;④开展含碳流追踪与碳足迹分析的低碳电力系统优化调度课题研究与论文复现; 其他说明:文档配套完整的仿真模型、参考文献与详细说明材料,资源可通过微信公众号“荔枝科研社”获取,适用于科研项目支撑、高水平论文复现、课程设计及研究生课题指导。

T型三电平逆变器MPC模型预测控制(电流预测+功率预测)中点电位平衡控制仿真(Simulink仿真实现)

内容概要:本文围绕T型三电平逆变器的模型预测控制(MPC)技术展开,重点研究了基于Simulink的电流预测、功率预测及中点电位平衡控制的仿真建模与实现方法。通过构建完整的MPC控制框架,系统实现了对逆变器多目标控制的精细化管理,有效解决了中点电位波动问题。文档还整合了多种先进控制策略与智能优化算法(如RIME、PSO、GWO等),用于控制器参数整定与系统性能优化,并涵盖了微电网、VSG、储能系统、柔性直流配电等电力系统前沿领域的仿真应用,展示了MPC在电力电子变换系统中的强大适应性和扩展潜力。; 适合人群:具备一定电力电子、自动控制理论基础,从事电气工程、新能源系统、电力系统自动化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展三电平逆变器中点电位平衡控制的研究与仿真验证;②应用模型预测控制(MPC)于电力变换系统的设计与优化;③结合智能优化算法实现控制器参数整定与系统性能提升;④为科研项目、论文复现、毕业设计提供可参考的技术方案与仿真模型。; 阅读建议:此资源集合了大量实际仿真案例与算法实现代码,建议结合所提供的参考文献、说明文档及网盘资料进行系统学习,重点关注MPC控制结构搭建、中点电位波动抑制策略设计,并通过修改参数、更换算法等方式深入理解不同控制策略的效果差异。

H.266/VVC核心技术解析:下一代视频编码标准如何实现50%码率压缩——从QTMTT到ALF的全链路革新

本文系统解析H.266/VVC核心编码技术,详解QTMTT划分、67种帧内预测、仿射运动补偿、LFNST变换、三级环路滤波等关键创新,揭示VVC相比H.265实现50%码率压缩的技术路径,展望8K与VR时代的应用前景。

the3clipse的博客 394

高校技术转移办公室如何精准识别有转化潜力的科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

H.265全系列总结与H.266/VVC展望:从HEVC核心架构到下一代视频编码标准

本文系统回顾H.265/HEVC核心编码架构,梳理CTU、帧内/帧间预测、变换量化、环路滤波、熵编码五大模块的协同关系,并展望H.266/VVC的关键技术演进与未来应用场景,是HEVC系列技术文章的收官之作。

the3clipse的博客 426

基于时频特征匹配的雷达多体制信号数字下变频自适应方法探究(Matlab代码实现)

内容概要:本文系统研究了基于时频特征匹配的雷达多体制信号数字下变频(DDC)自适应方法,并提供了完整的Matlab代码实现。针对现代雷达系统中复杂电磁环境下多体制信号共存的问题,提出了一种结合时频分析与特征匹配的信号识别与参数估计方法,能够有效区分不同调制体制的雷达信号。在此基础上,设计了自适应数字下变频处理架构,实现了对未知信号的智能解调与频谱搬移,提升了雷达接收机的兼容性与智能化水平。研究重点在于优化时频域特征提取算法以提高识别准确率,并通过数字下变频技术实现高精度、高效率的信号处理,增强了系统在非合作环境下的适应能力。; 适合人群:具备雷达信号处理、数字信号处理等相关专业知识,熟悉时频分析方法与Matlab编程工具的研究生、科研人员及从事雷达系统研发的工程技术人员。; 使用场景及目标:①应用于复杂电磁环境中多体制雷达信号的自动识别与解调;②提升雷达接收机对未知或非合作信号的自适应处理能力;③作为高校与科研机构的教学与实验案例,深化对时频分析、特征匹配与DDC技术融合应用的理解。; 阅读建议:读者应结合提供的Matlab代码深入剖析算法实现流程,重点关注短时傅里叶变换(STFT)、Wigner-Ville分布等时频分析手段在特征提取中的应用,以及特征匹配机制与自适应DDC参数调整之间的联动逻辑,建议通过仿真多种典型雷达信号(如LFM、FSK、PSK等)来验证算法的有效性与鲁棒性。

国央企创新负责人如何通过平台推动内部技术成果高质量转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

上一篇: H.266/VVC核心技术解析:下一代视频编码标准如何实现50%码率压缩——从QTMTT到ALF的全链路革新
下一篇: VVC在8K与VR全景视频中的实战应用:端到端编码工作流与性能优化策略
the3clipse
博客等级 码龄50天 68粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值