当前位置: 首页 > news >正文

h264之多视点mvc编码及解码过程(JMVC平台举例)

        h264标准参考平台JMVC是针对MVC标准的,JMVC支持多视点编码、合流、多视点解码操作。可以利用JMVC生成h264 mvc码流和解码。

        JMVC的下载地址是:jvet / JMVC · GitLabH.264/AVC multi-view coding (MVC) extension JMVC reference softwareicon-default.png?t=O83Ahttps://vcgit.hhi.fraunhofer.de/jvet/jmvc        windows平台上JMVC用visual studio生成可执行程序。MVC编、解码过程中主要用到如下三个可执行文件,主要作用如下:

H264AVCEncoderLibTestStatic.exe 是编码MVC码流的可执行程序

MVCBitStreamAssemblerStatic.exe 是合并MVC各视点码流的工具

H264AVCDecoderLibTestStatic.exe 是解码合并后的码流,解码出各个视点的yuv。

        下载好的JMVC源代码中带有各个标准测试序列所需要的配置文件。目录是:

xxx/jmvc/JMVC/H264Extension/data

一、执行编码步骤

        因为手头上只有ballroom、exit、vassar这三个序列。这三个序列都是8视点场景。以ballroom序列为例,用该目录下的ballroom_qp32.cfg配置文件,来执行编码任务。

        跑编码任务时,ballroom_qp32.cfg文件需要根据本地电脑的测试序列所在路径修改三处地方:

InputFile   D:\\seq\\ballroom.yuv 
OutputFile .\qp32\output
ReconFile  .\qp32\recon

        解释一下InputFile后面的输入文件路径怎么设置。官方ballroom序列有8个视点,每个视点文件命名方式是ballroom_x.yuv。“x”代表视点编号,值为0~7。这里InputFile后边的文件名是ballroom.yuv。在JMVC编码器内部,会根据输入的视点总数,将ballroom.yuv,依次更改文件名为ballroom_0.yuv ~ ballroom_7.yuv,来从磁盘中读取文件。

        ballroom_qp32.cfg文件更改好后,就可以依次对各个视点的yuv序列进行编码。编码命令如下:

.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 0
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 2
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 1
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 4
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 3
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 6
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 5
.\H264AVCEncoderLibTestStatic.exe -vf ../JMVC/H264Extension/data/ballroom_qp32.cfg 7

        对各个视点yuv的编码次序要按照ballroom_qp32.cfg配置文件,指定的视点参考关系来进行编码。这里使用配置文件默认的参考关系。

ViewOrder               0-2-1-4-3-6-5-7   # (Order in which view_ids are coded)

二、执行视点码流合并步骤

        利用MVCBitStreamAssemblerStatic.exe来将上述8个视点的码流进行合并,使用xxx/jmvc/JMVC/H264Extension/data目录下的assembler.cfg配置文件。需要修改配置文件如下:

OutputFile              ./qp32/ballroom.264
NumberOfViews           8
InputFile0              ./qp32/output_0.264 
InputFile1              ./qp32/output_2.264 
InputFile2              ./qp32/output_1.264 
InputFile3              ./qp32/output_4.264 
InputFile4              ./qp32/output_3.264 
InputFile5              ./qp32/output_6.264 
InputFile6              ./qp32/output_5.264 
InputFile7              ./qp32/output_7.264 

        修改完配置文件后,执行如下命令:

MVCBitStreamAssembler.exe -vf  assembler.cfg

         执行完上述命令后,目录./qp32下ballroom.264就是最终的8个视点的MVC码流文件。

三、解码MVC码流

使用H264AVCDecoderLibTestStatic.exe,不需要使用配置文件。执行如下命令就能解码出来各个视点的yuv。使用的码流文件是上一步骤合并出来的码流文件ballroom.h264

执行如下命令,设置各个视点通用的解码yuv名称dec_recon.yuv,视点数目是8个。

H264AVCDecoderLibTestStatic.exe ./qp32/ballroom.h264 ./qp32/dec_recon.yuv 8

执行完上述命令后,就会生成dec_recon_0.yuv ~ dec_recon_7.yuv,共8个yuv文件。

四、其他

  • 如果只想看MVC码流长啥样,本人已经将编码出来的码流文件上传到csdn。可以从https://download.csdn.net/download/Wu_qz/90232596下载

相关文章:

h264之多视点mvc编码及解码过程(JMVC平台举例)

h264标准参考平台JMVC是针对MVC标准的,JMVC支持多视点编码、合流、多视点解码操作。可以利用JMVC生成h264 mvc码流和解码。 JMVC的下载地址是:jvet / JMVC GitLabH.264/AVC multi-view coding (MVC) extension JMVC reference softwarehttps://vcgit.hh…...

小程序学习08—— 系统参数获取和navBar组件样式动态设置

一 系统信息的概念 uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息。 success 返回参数说明: 参数分类说明statusBarHeight手机状态栏的高度system操作系统名称及版本。。。 二 自定义navbar 2.1 获取系统参数 代码展示…...

数据库环境安装(day1)

网址:MySQL 下载(环境准备): (2-5点击此处,然后选择合适的版本) 1.linux在线YUM仓库 下载/安装: wget https://repo.mysql.com//mysql84-community-release-el9-1.noarch.rpm rpm -i https://r…...

网络安全-web渗透环境搭建-BWAPP(基础篇)

01--所需系统环境: 虚拟主机系统部署(vmware,虚拟主机创建、虚拟主机网络配置(桥接,便于网络中多个主机都能访问虚拟主机)、虚拟软件功能,快照、克隆、镜像文件加载,ova文件制作&am…...

当算法遇到线性代数(三):实对称矩阵

实对称矩阵的理论与应用 线性代数系列相关文章(置顶) 1.当算法遇到线性代数(一):二次型和矩阵正定的意义 2.当算法遇到线性代数(二):矩阵特征值的意义 3.当算法遇到线性代数&#x…...

WayLand的架构和协议

WayLand的架构和协议 1. Wayland简介 1.1 Wayland是啥?为啥它这么重要? 嘿,你知道吗?有时候咱们用电脑的时候,是不是觉得图形界面有点慢、有点卡?那是因为我们还在用一个叫X Window System (X11)的老伙计…...

STM32学习(十)

I2C模块内部结构 I2C(Inter-Integrated Circuit)模块是一种由Philips公司开发的二线式串行总线协议,用于短距离通信,允许多个设备共享相同的总线‌。 ‌硬件连接简单‌:I2C通信仅需要两条总线,即SCL&…...

进阶篇-Day17:JAVA的日志、枚举、类加载器、反射等介绍】

目录 1、日志1.1 日志概念1.2 日志框架(1) Logback框架:(2)配置文件介绍: 2、枚举3、类加载器3.1 类加载器的介绍3.2 类加载器的加载过程:加载、链接、初始化3.3 类加载器的分类3.4 双亲委派模式…...

Java设计模式 —— 【行为型模式】责任链模式(Chain-of-responsibility Pattern) 详解

文章目录 模式介绍优缺点适用场景模式结构案例实现 模式介绍 责任链模式又名职责链模式,它是一种对象行为的设计模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链&…...

C++和Python中负数取余结果的区别

C中的负数取余规则(取模%)规则 在C中,取余运算( % )的结果符号与被除数相同。从数学定义角度看,C遵循的是尽量让商向零取整的规则。例如计算 -7/3,商是 -2 (向零取整)&a…...

rust学习——环境搭建

rust安装:https://kaisery.github.io/trpl-zh-cn/ch01-01-installation.html 1、vscode装插件: toml语法支持 依赖管理 rust语法支持 2、创建demo 3、查看目录 4、执行文件的几种方式: rust安装:https://www.rust-lang.org/z…...

Linux系统中解决端口占用问题

在日常的 Linux 系统管理和开发过程中,端口占用是一个常见且令人头疼的问题。无论是部署新服务、调试应用程序,还是进行系统维护,遇到端口被占用都可能导致服务无法正常启动或运行。本文将详细介绍在 Linux 系统中如何识别和解决端口占用问题…...

现代软件架构设计:14个质量属性的定义、权衡与最佳实践

1. 引言 1.1 技术架构的重要性 技术架构是指导软件系统设计和开发的核心,它定义了系统的高层结构及关键技术选型。一个优秀的技术架构可以提高开发效率、系统稳定性和扩展能力,确保项目成功落地。面对复杂业务场景,技术架构的设计至关重要&…...

【UE5 C++课程系列笔记】25——多线程基础——FGraphEventRef的简单使用

目录 概念 使用示例1 使用示例2 概念 FGraphEventRef 本质上是对一个异步任务或者一组相关异步任务在虚幻引擎任务图系统中的一种引用(reference)。虚幻引擎的任务图系统用于高效地调度和管理各种异步任务,协调它们的执行顺序以及处理任务…...

计算机网络之---信号与编码

信号 在物理层,信号是用来传输比特流的物理量,它可以是电压、电流、光强度等形式,通常通过电缆、光纤或者无线信道等媒介传播。 信号主要分为以下两种类型: 模拟信号(Analog Signal):信号在时间…...

linux下用命令行给串口写数据和读数据

在 Linux 系统中,串口设备(如 /dev/ttyS3)可以通过命令行进行读写操作。您遇到的问题是因为 Bash 解释了命令行中的字符串 “dis vlan\n”,但并没有按预期向串口设备发送数据。你应该将数据通过重定向发送到串口设备。 下面是如何…...

【生物信息】如何使用 h5py 读取 HDF5 格式文件中的数据并将其转换为 NumPy 数组

data_mat h5py.File(args.data_file) x1 np.array(data_mat[X1]) x2 np.array(data_mat[X2]) if not args.no_labels: y np.array(data_mat[Y]) data_mat.close() 这段代码展示了如何使用 h5py 读取 HDF5 格式文件中的数据并将其转换为 NumPy 数组。以下是代码的详细解释&a…...

纯手工(不基于maven的pom.xml、Web容器)连接MySQL数据库的详细过程(Java Web学习笔记)

1 引言 最近读一些Java Web开发类的书籍时,发现书中的连接数据库的过程缺少了一些关键性的过程,这对初学者非常不友好。为此,本文将给出详细的连接MySQL数据库的过程,并且是纯手工,不依赖于pom.xml和Web容器&#xff…...

thingsboard通过mqtt设备连接及数据交互---记录一次问题--1883端口没开,到服务器控制面板中打开安全组1883端口

1,链接不上:原因是1883端口没开,到服务器控制面板中打开安全组1883端口 2,参考链接: https://blog.csdn.net/bujingyun8/article/details/120024788...

联邦学习中的LoRA:FedLoRA

联邦学习中的LoRA:FedLoRA 联邦学习中的LoRA(Low-Rank Adaptation of Large Language Models)是一种用于在联邦学习场景下对大型语言模型进行低秩适应和高效微调的方法。以下是其原理及示例说明: 原理 低秩矩阵分解:在联邦学习中,通常会涉及到对预训练的大型模型进行微…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...