【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

相关文章

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)