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.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文件。

四、其他

相关推荐
猫头虎33 分钟前
最新如何在服务器中解决FFmpeg下载、安装和配置问题教程(Linux|Windows|Mac|Ubuntu)
linux·服务器·windows·ffmpeg·音视频·pip·视频编解码
Alt.910 小时前
SpringMVC基础二(RestFul、接收数据、视图跳转)
java·开发语言·前端·mvc
huntenganwei13 小时前
libva之ffavdemo分析
视频编解码
爱的叹息17 小时前
spring mvc 在拦截器、控制器和视图中获取和使用国际化区域信息的完整示例
java·spring·mvc
爱的叹息2 天前
Spring MVC 重定向(Redirect)详解
java·spring·mvc
隔壁小查2 天前
【后端开发】Spring MVC阶段总结
python·spring·mvc
正点原子2 天前
QuarkPi-CA2 RK3588S卡片电脑:6.0Tops NPU+8K视频编解码+接口丰富,高性能嵌入式开发!
电脑·视频编解码
少年的云河月2 天前
OpenHarmony 5.0版本视频硬件编解码适配
音视频·harmonyos·视频编解码·openharmony·codec hdi
Alt.93 天前
SpringMVC基础一(SpringMVC运行原理)
数据库·spring·mvc
weixin_440597453 天前
MVC controller父类demo
mvc