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文件。
四、其他
- 如果只想看MVC码流长啥样,本人已经将编码出来的码流文件上传到csdn。可以从https://download.csdn.net/download/Wu_qz/90232596下载