VTM配置并使用VTM对YUV视频帧进行编解码(基于windows系统)

2023-10-26

  • 一.下载安装VTM
    H.266/VCC 参考软件VTM下载网址:https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM
    这里我选择的Tags是VTM-9.0(根据自己想用的VTM版本进行选择)然后点击右边的下载键下载压缩包
    在这里插入图片描述

下载后得到一个压缩包并将其解压到一个文件夹(比如我的解压路径是D:\VTM-Analyzer\VVCSoftware_VTM-VTM-9.0)

  • 二.下载安装Cmake
    CMake的用途是能通过一系列的源码和相关的配置来生成需要的编译器平台上的项目文件。刚刚我们下载的VTM-9.0可以理解为源码和配置,现在我们需要通过这些源码和配置在VS中(对于windows系统)生成项目文件。
    Cmake下载网址可参考:https://cmake.org/download/
    根据自己的需要下载相应的Cmake版本然后解压即可,解压后在bin文件中找到cmake-gui应用程序并打开
  • 三.配置VTM 在这里插入图片描述
    打开cmake-gui应用程序之后出现以下界面并输入相关路径:
    在这里插入图片描述
    点击Configure进行配置:
    在这里插入图片描述
    点击finish之后稍等一会儿,配置完成之后出现以下界面后再点击generate即可,然后VTM的配置就到此结束,可以发现在VTM9.0的文件夹中会出现一个build文件夹
    在这里插入图片描述
    四.使用VTM进行编解码
    打开刚刚生成的build文件夹->NextSoftware.sln,打开这个解决方案,之后选中ALL_BUILD右击鼠标点击“生成”后等上一段时间
    在这里插入图片描述
    等生成进度条满了之后并出现以下提示
    这个结果说明一切就还顺利,这个时候发现自己VTM9.0文件夹下又出现了一个bin文件如下图:
    在这里插入图片描述
    bin文件中包含了我们所要用到的encoder编码器和decoder解码器,接下来我们可以快乐地进行编解码了!(先别急着点击这些应用程序,往下看)
    1.编码
    (1)在对YUV文件中的帧进行编码之前,首先确保自己电脑里有YUV格式的文件,我这里的YUV文件是视频编码里比较常用的BasketballDrill_832x480_50.yuv(为了后续操作方便,我在VTM9.0文件夹下建了一个test文件夹以便存放各种编解码之后的码流和其他文件)。
    我将BasketballDrill_832x480_50.yuv放在了我建的test文件夹下(路径为D:\VTM-Analyzer\VVCSoftware_VTM-VTM-9.0\test\BasketballDrill_832x480_50.yuv)。
    同时将VTM9.0文件夹下的cfg文件夹打开,找到自己要编码的序列的配置文件(我选择的是per-sequence文件夹下的BasketballDrill.cfg)将其复制到test文件夹下(路径为D:\VTM-Analyzer\VVCSoftware_VTM-VTM-9.0\test\BasketballDrill.cfg),并使用文本编辑器打开它根据情况看修改配置参数与否
    在这里插入图片描述
    然后在cfg文件夹下找到encoder_intra_vtm.cfg配置文件并将其复制到test文件夹下(因为我主要利用帧内工具进行编码),使用文本编辑器打开它根据情况看是否修改帧内编码的配置参数(我这没进行修改)。
    到这差不多可以真正快乐地进行编码了~
    (2)打开刚刚build文件夹下的NextSoftware.sln解决方案,鼠标右击EncoderApp将其设为启动项目
    再点击EncoderApp下的属性->配置为“所有配置”->调试->工作目录则是test文件所在的路径D:\VTM-Analyzer\VVCSoftware_VTM-VTM-9.0\test; 命令参数为-c BasketballDrill.cfg -c encoder_intra_vtm.cfg>enc.txt,其中-c是读入配置信息(前面为序列配置信息,后面为编码工具配置信息),>enc.txt的作用是可以将编码的一些信息比如编码所需的时间和YUV分量的PSNR以txt文件的方式显示出来。
    在这里插入图片描述
    设置完这些参数后点击"应用"并确定,点击“本地windows调试器”出现以下界面,这时候静等编码结果~大概编一帧需要个1分钟左右吧
    在这里插入图片描述
    接下来test中就又有新成员啦~
    在这里插入图片描述
    其中enc里存放的是编码时间和YUV分量的PSNR如下图
    在这里插入图片描述
    rec.yuv是通过编码之后的重建帧,str.bin是编码后的码流(都是一些01二进制数),至此,编码过程就完成啦~接下来是解码过程
    2.解码
    鼠标右击DecoderApp将其设为启动项目
    再点击DecoderApp下的属性->配置为“所有配置”->调试->工作目录则是test文件所在的路径D:\VTM-Analyzer\VVCSoftware_VTM-VTM-9.0\test; 命令参数为-b str.bin -o dec.yuv>dec.txt,其中-b是读入码流,-o是输出解码之后的yuv文件,>dec.txt的作用是可以将解码的一些信息比如解码所需的时间以txt文件的方式显示出来。
    在这里插入图片描述
    设置完这些参数后点击"应用"并确定,点击“本地windows调试器”出现以下界面,这时候静等解码结果~大概只需要秒级的时间哈哈,所以很快test文件中就又有新成员了
    在这里插入图片描述
    其中dec里存放的是解码时间如下图,而dec.yuv是通过解码之后的恢复帧(按理来说要和前面的rec.yuv互相匹配一致)在这里插入图片描述
    至此,就顺利地完成了对YUV中一帧的编码和解码了~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VTM配置并使用VTM对YUV视频帧进行编解码(基于windows系统) 的相关文章

  • 渗透测试流程

    文章目录 前言 一 渗透测试流程 二 流程步骤 1 明确目标 2 信息收集 3 漏洞探测 4 漏洞验证 5 提权所需 6 信息分析 7 信息整理 8 形成报告 总结 前言 渗透测试 出于保护信息系统的目的 更全面地找出测试对象的安全隐患 入
  • python数据库连接

    python数据库连接 import os import time import pymysql import sys class Myclass object def init self try self db pymysql conne
  • Springboot整合Activiti详解

    文章目录 版本依赖 配置文件 需要注意的问题 画流程图 activiti服务类进行编写 流程部署 流程定义 启动流程 流程实例 测试流程 启动流程 完成任务 受理任务 版本依赖 开发工具 IDEA SpringBoot 2 4 5 这里我试
  • MySQL

    1 MySQL概述 1 什么是数据库 数据库是一个存储数据的仓库 2 都有哪些公司在用数据库 金融机构 游戏网站 购物网站 论坛网站 3 提供数据库服务的软件 1 软件分类 MySQL SQL Server Oracle Mariadb D
  • 初中计算机试题戏曲进校园,【校园通讯】“戏曲进校园”走进东街学校,春风化新雨,戏曲百媚生!...

    原标题 校园通讯 戏曲进校园 走进东街学校 春风化新雨 戏曲百媚生 戏曲进校园 戏曲进校园 走进东街学校 春风化新雨 戏曲百媚生 文 东街学校 张永慰 弘扬民族文化 展现戏曲精华 10月10日 戏曲进校园 活动走进济水东街学校 为全体师生带
  • 3.18飞书面试(58min)

    3 18飞书面试 58min 1 问项目 首先是问redis是怎么用的 mq的消费是怎么写的呢 mq如何保证消息消费的可靠性 你在项目中用到了本地缓存 放在了业务代码内存中 那如果签到一半你的项目突然崩了 本地缓存都消失了 那不是会出问题啊
  • [人工智能-深度学习-66]:架构 - 人工智能的学习误区与正确思路、方法

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122116482 目录 前言 第1章
  • spring+struts+ibatis

    原来的系统里面只采用了struts的框架 并且没有使用struts的校验功能 为方便开发 修改框架为spring struts ibatis组合1 添加需要的jar文件2 添加spring配置文件applicationContext xml
  • view-source是一种协议,查看源码

    view source是一种协议 早期基本上每个浏览器都支持这个协议 后来Microsoft考虑安全性 对于WindowsXP pack2以及更高版本以后IE就不再支持此协议 但是这个方法在FireFox和Chrome浏览器都还可以使用 如
  • Linux驱动_spi驱动(ICM20608)

    参考 Linux SPI 驱动分析 1 结构框架 StephenZhou CSDN博客 linux spi驱动 Linux SPI 驱动分析 2 框架层源码分析 StephenZhou CSDN博客 spi message init SPI
  • sql server 加密_列级SQL Server加密

    列加密 创建一个新的数据库并创建CustomerInfo表 CREATE DATABASE CustomerData Go USE CustomerData GO CREATE TABLE CustomerData dbo Customer
  • 机器学习/深度学习--手写数字识别(MNIST数据集)

    import torch 导入torchvision的transform模块 用来处理数据集 from torchvision import transforms from torchvision import datasets from
  • WebRTC音视频通话-RTC直播本地视频及相册视频文件

    WebRTC音视频通话 RTC直播本地视频及相册视频文件 WebRTC音视频通话 RTC直播本地视频文件效果图如下 WebRTC音视频通话 RTC直播本地视频文件时候 用到了AVPlayer CADisplayLink 一 通过AVPlay
  • SpringBoot项目部署到阿里云服务器

    一 阿里云 01 开放端口 02 安装jdk 將jar包放到这个目录下 解压缩 并删除安装包 tar zxvf jdk 8u191 linux x64 tar gz rm f jdk 8u191 linux x64 tar gz 设置系统环
  • shell中 >&2含义

    echo this is a test gt 2 gt 2 也就是把结果输出到和标准错误一样 之前如果有定义标准错误重定向到某file文件 那么标准输出也重定向到这个file文件 其中 的意思 可以看成是 The same as 与 一样
  • webpack入门

    webpack入门 webpack简介 模块打包器 项目构建工具 自动化构建工具 将多种类型资源之间的依赖关系构建成统一的静态资源 打包上线部署 js css等 但不包括html 因为它认为html不算模块 四个核心概念 入口entry 输
  • springboot整合shiro实现认证授权源码

    shiro admin 介绍 springboot整合shiro实现前后端分离架构 swagger文档协调前端开发 源码地址 https gitee com liujinxin ark shiro admin 软件架构 架构说明 sprin
  • 【深度学习】 Python 和 NumPy 系列教程(一):Python基本数据类型:1、数字(整数、浮点数)及相关运算;2、布尔值

    目录 一 前言 二 实验环境 三 Python基本数据类型 1 数字 a 整数 int b 浮点数 float c 运算 运算符 增强操作符 代码整合 d 运算中的类型转换 e 运算函数abs max min int float 2 布尔值

随机推荐

  • 如何判断对象中是否存在某个键名

    之前遇到过很多这样的问题 如何去判断对象中是否存在某个键 从而对其进行下一步的操作 下面就就给大家介绍一种我目前了解的一种方法 首先你新建了一个新的对象 var obj 顺便复习一下上次讲的forEach循环 function get so
  • TCP 三次握手和四次挥手的面试题

    重新整理了一版 TCP 三次握手和四次挥手的面试题 2023最新版 任 TCP 虐我千百遍 我仍待 TCP 如初恋 巨巨巨巨长的提纲 发车 发车 img TCP 基本认识 TCP 头格式有哪些 我们先来看看 TCP 头的格式 标注颜色的表示
  • python 编码 —— codecs 库

    1 对文件读写 import codecs fout codecs open test html w encoding UTF 8 fout write fout write fout close 很自然地可将其改造为 with 结构 wi
  • 淘宝TDDL数据库分库分表

    淘宝TDDL数据库分库分表 2014 06 04 23 18 3334人阅读 评论 0 收藏 举报 分类 数据库 1 分库分表 而且分库规则非常灵活 2 主键生成策略 目前TDDL提供的id生成主要还是依托数据库来进行的 oracle可以直
  • 八大排序算法-归并排序

    归并排序的定义 是将两个 或两个以上 有序表合并成一个新的有序表 即把待排序序列分为若干个子序列 每个子序列是有序的 然后再把有序子序列合并为整体有序序列 归并排序的基本思想 设r i n 由两个有序子表r i m 和r m 1 n 组成
  • ref绑定到不同元素获取到不同对象

    ref如果绑定在组件中 那么通过this ref refname获取到的是一个组建对象 ref如果绑定在普通的元素中 那么通过this ref refname获取到的是一个元素对象
  • 云呐

    科技大数据时代 企业的信息化规划刻不容缓 固定资产管理系统做为一款企业资产方案系统 可完成对企业资产的系统化管理 充分发挥资产更高的实用价值 固定资产管理系统可将企业內部全部资产融合在一起 根据对固定资产的增加 改动 退出 迁移 删除 使用
  • 2016年4月28日(6985小时时),第一次签合同,里程碑

    这周四 我觉得是个历史性的事件 是个里程碑 说明 锲而不舍 金石可镂 虽然不多 2万
  • win11/ win10 C盘扩容教程

    win11 win10 C 盘扩容教程 1 写在前面 10月5号微软官方正式发布了win11操作系统 作为一名科技星人 我也是第一时间升级体验了一番 如何升级win11我就不多说了 晚上一搜教程非常的多 这里推荐使用win11升级助手升级
  • 合宙ESP32系列

    目录 源文档见 ESP32系列编译文档 LuatOS 文档 本地编译详细步骤 准备环境 准备项目 获取源码 编译前的最后准备 编译 LuatOS SoC通用固件格式soc介绍 定制固件里的库 PS luat conf bsp h问题汇总 源
  • SGL STL源码剖析——迭代器

    SGL STL源码剖析 迭代器 迭代器 迭代器的型别 Traits的作用 迭代器相应的五种型别 type traits 迭代器 在我们使用STL容器的时候 迭代器是非常常见的 STL将容器和算法分开 彼此独立 然后通过迭代器相互关联 迭代器
  • U-Net: Convolutional Networks for Biomedical Image Seg-mentation

    Abstract 深度网络的成功训练需要数千个带注释的训练样本 这是一个很大的共识 在本文中 我们提出了一种网络和训练策略 它依赖于数据增强的强大使用 以更有效地使用可用的带注释的样本 该体系结构由捕获上下文的收缩路径和支持精确本地化的对称
  • 纯源码程序的执行

    QT Creator本身是个IDE安装的时候根据自己需要配置的又有对应的编译器 因此编写普通的程序也不再话下 选择Non Qt Project工程 并在右侧根据自己的需要选择C 应用还是C应用 新工程中工程管理文件和代码如下 执行结果如下
  • 表与表之间的关系

    一 表关系的概念 现实生活中 实体与实体之间肯定是有关系的 如 学生和老师 学生和课程 部门和员工 每个人和自己的身份证号码等 在设计表的时候 就应该体现出来表与表之间的这种关系 表与表之间的三种关系 一对多 最常用的关系 如部门和员工 多
  • 在ubuntu下如何搜索文件?

    1 whereis 文件名 特点 快速 但是是模糊查找 例如 找 whereis mysql 它会把mysql mysql ini mysql 所在的目录都找出来 我一般的查找都用这条命令 2 find name 文件名 特点 准确 但速度
  • 从端到端打通模型端侧部署流程(MNN)

    从端到端打通模型端侧部署流程 MNN MNN框架 MNN的官方介绍 MNN的架构 问题解决 MNN使用样例 MNN部署 一般流程 创建会话 运行会话 获取输出 流程汇总 总结 MNN框架 MNN的官方介绍 官方文档 有疑问一定要先查这里 M
  • 西门子 SCL 语言 模拟量转换小例程

    软硬件平台 软件是博图 TIA v15 硬件是西门子300系列 PLC 简介 使用scl语言编写一个FC子程序 对模拟量进行处理 对模拟数据进行转换 详细介绍 添加新块 添加一个FC块 语言选择scl 添加变量 输入型变量5个 一个运算后输
  • 信息学奥赛一本通 1177:奇数单增序列

    题目链接 http ybt ssoier cn 8088 problem show php pid 1177 include
  • 二进制思想及其应用

    两个经典面试题 二进制思想 1 你让工人为你工作7天 回报是一根金条 这个金条平分成相连的7段 每工作1天的回报就是1段 每天结束的时候 工人都有可能会向你要金条 如果只允许你两次把金条弄断 你如何给你的工人付费 2 有1000个苹果 将它
  • VTM配置并使用VTM对YUV视频帧进行编解码(基于windows系统)

    一 下载安装VTM H 266 VCC 参考软件VTM下载网址 https vcgit hhi fraunhofer de jvet VVCSoftware VTM 这里我选择的Tags是VTM 9 0 根据自己想用的VTM版本进行选择 然