JMVC8.3,测试编码,解码,和流的合成。
先测试H264AVCEncoderLibTestStaticd.exe,选择整个解决方案,属性,通用属性,启动项目,单启动项目,然后选择H264AVCEncoderLibTestStaticd。再选择这个工程,属性,调试属性,设置命令参数和工作目录,我的设置是:
如果是命令行调用,使用H264AVCEncoderLibTestStaticd -vf encoderMVC.cfg 0
总共有8个view,就要调用或者调试8次。写成批处理:
@echo off echo 0 2 1 4 3 6 5 7 H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 0 >> log0.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 2 >> log2.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 1 >> log1.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 4 >> log4.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 3 >> log3.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 6 >> log6.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 5 >> log5.txt H264AVCEncoderLibTestStaticd.exe -vf E:\jmvc\JMVC\myconfig\encoder\encoderMVC.cfg 7 >> log7.txt echo It is done. pause
相对应的cfg文件,开头要写成:
# JMVM H.264/AVC Extension Configuration File #_640x480_25p #============================== GENERAL ============================== InputFile ..\ballroom # Input file OutputFile output # Bitstream file
这样,就把编码的批处理文件、cfg文件,和编码结果都放在了encoder子目录里。生成结果是output_0.264~output_7.264,以及recon_0.yuv~recon_7.yuv。注意生成的顺序应该是0 2 1 4 3 6 5 7
编码完成后,应该将各路的264文件合称为一个。建立子目录assembler,新建批处理:
@echo off echo assembler start... MVCBitStreamAssemblerStaticd.exe -vf assembler.cfg >> assembler.txt echo assembler done pause
cfg文件:
#============================== Assembler: View Encode order ========================== OutputFile ballroom.264 NumberOfViews 8 InputFile0 ..\encoder\output_0.264 InputFile1 ..\encoder\output_2.264 InputFile2 ..\encoder\output_1.264 InputFile3 ..\encoder\output_4.264 InputFile4 ..\encoder\output_3.264 InputFile5 ..\encoder\output_6.264 InputFile6 ..\encoder\output_5.264 InputFile7 ..\encoder\output_7.264
执行得到文件ballroom.264
下面看解码:
解码不需要cfg文件,新建目录decoder,建立批处理如下:
@echo off echo decoder start... H264AVCDecoderLibTestStaticd.exe ..\assembler\ballroom.264 ballroom.yuv 8 >> decoder.txt echo decoder done pause
得到ballroom_0.yuv~ballroom_7.yuv,大小与编码时生成的recon_0.yuv~recon_7.yuv相同。
本来还要测试 提取功能,但是MVCBitStreamExtractorStaticd怎么调也调不通,郁闷。
【注意】
1.整个过程需要注意的是文件的写法,一般指定文件名,后面的下划线和数字编号会自动添加。但是解码的时候,ballroom.yuv,这里的扩展名yuv一定要添加,不然就出错。
2.顺序按0 2 1 34 3 6 5 7,不能打乱。解码时的参数8是指个数,不是指序号。
接下来把MVCBitStreamExtractorStaticd放一放,先好好看懂代码和原理吧。