JM86、X264、T264、FFMPEG编解码器评测

 

关于三种profile的解释

从应用角度看,H.264有三个层次,分为主要用于电视会议等通信的基本层次,面向高画质用途和录像的主层次以及面向内容配送的扩展层次。各层次的清晰度和编码速度取值不同。

基本层次(baseline profile)的主要技术为图像只含有I帧,P帧,支持帧内和帧间编码,系统内有环路滤波,1/4帧间预测,4:2:0 YUV格式输入,基于VLC的纠错编码(CAVLC),弹性宏块指令等。主要用于可视电话、会议电话,无线通信等实时性强的视频通信。

主要层次(main profile)则支持隔行视频,在基本层次基础上加入了CABAC运算编码技术和基于双向预测的B帧,滤波(接口)等技术,但不含弹性宏块指令。主要用于数字广播电视和数字视频存储。

扩展层次(extended profile)则在基线层次里加入B帧和滤波编码等,支持码流之间的切换(SP slice, SI slice)、改进误码性能,但不支持隔行视频和CABAC。主要应用于流媒体。

理论上Profile级别越高,表示采样精度越高,也就是视频越清晰。但有个前提就是,Profile级别高低和你要观看的载体有关系,相对来说在越是在大屏幕上观看,那所需要Profile级别也应相对应的提高,但与此同时带来的副作用就是你所观看视频的硬件环境也要提高。换句话说,Profile3.1对于IPAD足够用了,级别在高的话其视频观看效果质量也不会有明显提高。

还有重要一点,Profile的结果好还和片源的质量有直接关系,片源质量差,多高的Profile也没用。

T264

l T264对main profile的支持?

在T264中判断是否编码为main还是baseline,利用了如下代码。t->param.cabac 和t->param.b_num均从编码配置文件中获取。

if( t->param.cabac || t->param.b_num > 0 )

seq->profile_idc    = 77;(main)

else

seq->profile_idc    = 66;(baseline)

 在修改了成1 # CABAC 或者 1 # b frame number between 2 p-frame(0, 1, 2),编码出main profile标准的压缩文件,解码也顺利完成。可以证明T264是支持main profile的。

l T264解码器对JM86、X264和FFMPEG的支持?

测试一

测试文件:foreman_part_qcif.yuv

编    码:JM86

编码格式:baseline profile 3.0

压缩文件:test.264

解    码:T264

现    象:程序崩溃

测试二:

测试文件:foreman_part_qcif.yuv

编    码:JM86

编码格式:main profile 3.0

压缩文件:test.264

解    码:T264

现    象:程序崩溃

测试三

测试文件:foreman_part_qcif.yuv

编    码:X264

编码格式:main profile 5.1

压缩文件:test.264

解    码:T264

现    象:程序崩溃

暂时还没找到怎么配置X264的编码,只编出了main profile格式的。

FFMPEG只有解码器,所以只测试X264和JM86。

可以看到,T264解码器不支持JM86和X264。

X264

暂时只看到编码部分。

FFMPEG

测试四

测试文件:foreman_part_qcif.yuv

编    码:T264

编码格式:baseline profile 3.0

压缩文件:test.264

解    码:FFMPEG

现    象:解码成功

测试五

测试文件:foreman_part_qcif.yuv

编    码:T264

编码格式:main profile 3.0

压缩文件:test.264

解    码:FFMPEG

现    象:解码成功

测试六

测试文件:foreman_part_qcif.yuv

编    码:X264

编码格式:main profile 5.1

压缩文件:test.264

解    码:FFMPEG

现    象:解码成功

测试七

测试文件:foreman_part_qcif.yuv

编    码:JM86

编码格式:main profile 3.0

压缩文件:test.264

解    码:FFMPEG

现    象:解码成功

综上所述,FFMPEG对于X264、T264和JM86编码格式的文件均可解码。解码器建议采用FFMPEG。

对于JM86,实用性太差,不在考虑范围内。

你可能感兴趣的:(测试,存储,扩展,ipad,电话,h.264)