bitrate viewer 码流分析软件
HEVC码率分析工具
还包括了缓冲区的状态
Elecard HEVC Analyzer
https://pan.baidu.com/s/1jJE2W8A 密码:gmof
打开Elecard HEVC Analyzer,然后打开编码得到的.bin文件。
原博最后提的几点建议蛮有帮助的
4.错误分析
1. 没有进行任何改动,程序开始运行一闪就自动结束了。
尤其是新手!注意了!很多人一上手就跑程序,成功生成了,但是运行什么都没有,就这个问题!HM是需要设置输入参数和cfg的!
使用HM的肯定都会遇到,一般都是输入参数或cfg文件的问题,查看输出的out.txt可以看到相关提示。检查输入参数是否正确(阅读用户手册查错),cfg文件中的输入YUV地址是否填写正确,对应位置是否有对应的YUV文件。
2. 对代码进行改动后报错。
同上,查看输出的的out.txt看相关提示,找到对应位置进行修正。各类问题很多,就是很基本的C程序调试,不具体说了。
3. 运行程序,也不报错,也没有正常编码的提示。
首先还是建议等,因为很可能是因为你的机子太慢了,HM还好,如果使用JEM,编一帧都可以睡一觉了,耐心等一下。如果超过几个小时还不动,那就是程序的问题了,去找错吧。
4.正常编码输出的重构图像打开后如下图,有两种可能:
(1)编码输入的分辨率错误,只能改好重新编码一下。
(2)cfg中设置的InternalBitDepth为10,这不是错误,无法正常显示是因为重构图像是10bit图像,而一般YUV播放器只支持8bit图像,像素值越界。这里提供一个本人自己改的10bit YUV播放器:http://blog.csdn.net/lin453701006/article/details/79892864。
4.针对编码速度慢问题补充说明
新手肯定对于编码速度有很多疑问,也有很多人问我这个问题,因此在这里单独说明一下。
HM的编码速度相关的因素:
(1).很重要一定要记住,在真正测试时一定要用release版!release相比debug版本速度会快很多,x64也要比x86速度快一些。这个具体原因不深究了,有兴趣可以自己研究下。
关于这点深有体会,刚开始看的教程都是基于debug的,编码了100帧跑了3小时...
后来改成release,跑10帧用了3分钟,100帧估计也就半小时左右
但改release记得改工作目录
(2).输入参数,编码帧数、QP等。建议在检验你的代码是否正确和初步检测性能优劣时,用较少帧。而QP是公共测试条件限定的,没法从QP方面入手提高速度。
(3).视频序列的分辨率,这一点很好理解,没什么可说的。
(4).所有人都能想到,电脑配置也会影响。不过我尝试过,配置只要够用,运行速度差异不大,主要还是C++的运行效率限制了运行速度。
视频源下载地址Xiph.org :: Derf's Test Media Collection
我之前一直在纠结cfg配置文件中InputFile文件路径是斜杠还是反斜杠,后来发现没影响
linux端的码流分析工具
YUV player
YUV图像需要专门的播放器,网上一大把链接,懒得写了
SSIM分析
HM测试结果给出了PSNR,但是没有给SSIM,SSIM更符合人眼视觉特性
开源视频质量评价工具: Evalvid
Evalvid中的PSNR工具用于计算原始序列与受损序列之间的PSNR或者SSIM。
PS:虽然名字叫“PSNR”,实际上是可以计算SSIM的,在命令行后面添加参数“ssim”即可。
命令格式
<code class="hljs">psnr x y <YUV format> <src.yuv> <dst.yuv> [multiplex] [ssim] x 视频宽度
y 视频宽度
YUV format 420, 422
src.yuv 原始序列
dst.yuv 受损序列
[multiplex] 可选 [ssim] 可选:计算SSIM而不是PSNR</code>
使用示例(YUV格式:宽高为480x272,采样格式YUV420P,受损视频为 src01_480x272_0.100.yuv,原始视频src01_480x272.yuv)
计算PSNR:
<code class="hljs">psnr 480 272 420 src01_480x272_0.100.yuv src01_480x272.yuv > ref_psnr.txt</code>
计算SSIM:
<code class="hljs">psnr 480 272 420 src01_480x272_0.100.yuv src01_480x272.yuv ssim > ref_ssim.txt</code>
下载链接网上一堆