【Codecs系列】H.266开源编解码器:vvenc和vvdec介绍

2024-01-16 16:32

本文主要是介绍【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集成了大量新的编码工具导致复杂度也急剧上升,VTM的编码速度也非常慢。Fraunhofer 开发了速度比VTM更快和更实用的VVC编码器和解码器,号称是最快的VVC开源编解码器,分别为VVenC和VVdeC,具体介绍如下:

1、VVenC介绍

VVenC软件是在VTM的基础上进行了针对性的优化,包括重新设计软件以减轻性能瓶颈,广泛的SIMD优化,改进的编码器搜索算法以及基本的多线程支持。最新版本是v1.1.0,在最新版本中,faster档次速度提升20%,fast档次提升15%,medium档次提升7%。

特点:开源,BSD协议

2、VVenc和VVdec开源地址

https://github.com/fraunhoferhhi/vvenc

https://github.com/fraunhoferhhi/vvdec

3、VVenC编译和运行命令

VVenC编译完成之后会产生两个可执行文件,分别是标准编码器vvencapp和专业级编码器vvencFFapp。

3.1、编译方法

cmake ./
make
注意事项: cmake版本需要3.12.0及以上。

3.2、运行命令行

  • 标准编码器vvencapp:
    假设输入的序列采样格式为YUV420,位深为8比特,分辨率为416x240,使用faster preset进行编码:
./vvencapp  -i BlowingBubbles_416x240_50.yuv  -s 416x240 -c yuv420 --preset faster -p -1  -o out.266
  • 专家级编码器vvencFFapp:
    vvencFFapp的使用方式类似于VTM,也是使用配置文件进行。大部分编码参数和VTM保持一致,但是某些参数会增加额外的可选模式。其配置文件可在cfg文件夹下找到。
./bin/release-static/vvencapp -i SlideEditing_1280x720_30_300.yuv -s 1280x720 -c yuv420 -r 30 -ip 96 --preset faster -v 6 -b 0 --qp 45 -o out.266

4、VVenC如何使用Lowdelay P配置编码?

vvenc的默认配置是Random Access,但是我们需要测试Lowdelay P(IPPP)的编码场景怎么办呢?

1、首先需要在vvenc根目录下面的cfg/experimental中找到lowdelay_faster.cfg配置文件,这个配置文件是LDB的配置,即IBBBBBBB的时域参考结构,需要将其中的B帧改成P帧,参考VTM中的encoder_lowdelay_P_vtm.cfg对应修改成P帧;
2、命令行参数配置如下:

vvencFFapp -c ~/H266/vvenc/cfg/experimental/lowdelay_faster.cfg -s 1280x720  -fr 30 -ip 96 -dr 2 -i SlideShow_1280x720_20_500.yuv -b out.266

运行结果如下图所示:
在这里插入图片描述


THE END!

这篇关于【Codecs系列】H.266开源编解码器:vvenc和vvdec介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/613226

相关文章

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.