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

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下载

http://www.kler.cn/a/472501.html

相关文章:

  • Flask返回浏览器无乱码方法
  • docker学习记录:创建mongodb副本集
  • Vue.js支持哪些数据可视化工具?
  • Vue2移动端(H5项目)项目封装switch组件支持动态设置开启关闭背景色、值及组件内显示文字描述、禁用、switch 的宽度
  • 关于Mac中的shell
  • css中的部分文字特性
  • CSS语言的数据结构
  • 条款47:请使用 traits classes 表现类型信息(Use traits classes for information about types)
  • 【利用 Unity + Mirror 网络框架、Node.js 后端和 MySQL 数据库】
  • c#委托和事件
  • 30、论文阅读:基于小波的傅里叶信息交互与频率扩散调整的水下图像恢复
  • 大数据技术(九)—— HBase优化
  • 【QT-QTableView实现鼠标悬浮(hover)行高亮显示+并设置表格样式】
  • SpringBoot中的设计模
  • 03、Docker学习,理论知识,第三天--DockerFile
  • linuxCNC(六)配置LinuxCNC完成伺服控制
  • pytorch torch.arange函数介绍
  • 鸿蒙中调整应用内文字大小
  • android的显式隐式intent
  • Taro+react 开发第一节创建 带有redux状态管理的项目
  • 使用图像过滤器在 C# 中执行边缘检测、平滑、浮雕等
  • 【每日学点鸿蒙知识】自定义弹窗实现分享、Badge切换闪动等
  • sqlalchemy CreateIndex
  • 第一次使用Git上传本地项目到github上
  • 探索Rancher服务发现机制:容器世界的“导航仪”
  • Spring AI ectorStore