开发一个HEVC码率分析工具

7 篇文章 4 订阅
3 篇文章 0 订阅

  在开发编解码器时,经常需要分析码率波动情况,分析缓冲区是否有上下溢情况,所以用python开发一个简单的工具。它可以分析HM编码器的输出log,提取每一帧的比特数,结合视频帧率,就可以绘制码率波动图和VBV缓冲区状态的图像了。工具的UI如图1图2所示:plot type选项有两种选择:选项1"bitrate viewer"用于绘制每秒钟的码率情况;选项2"vbvbuffer view"用于绘制VBV缓冲区的状态图。

工具参数设置

  source log为选择HM编码器输出的log文件,点击Open按钮选择相应的文件即可。

  图1为绘制码率波动图的UI,有两个参数可设置:

  • "frame rate"即视频帧率。
  • "check interval"是设置多少帧统计一次码率,比如图中的25,表示每25帧(即一秒钟)统计一次码率。

  图2为绘制VBV状态的UI,有四个参数可设置:

  • "frame rate"即视频帧率。
  • "vbv_bufsize"是设置VBV缓冲区的大小(kbits),图2设的是6000,VBV=6Mbits。
  • "vbv_bitrate"是设置视频流的发送码率(kbps),对解码器而言,即往解码器接收端的VBV Buffer里填充的码率)
  • "vbv_init_time"是设置VBV缓冲区的初始填充时间(ms)
图1、绘制码率波动图的UI

 

图2、绘制VBV状态的UI​​​

 

工具输出结果

  配置好工具的选项后,点击"Start Plot"按钮,即可进行绘制。

  图3为输出的码率波动图像,图像的标题包含了平均码率,最大码率信息,及最大码率/平均码率的比值,图像上则标明了最大码率出现的时间点。可以从图像上看到,对这个序列的编码结果,整体码率波动很平缓,码率控制效果良好。

图3、码率波动图

  图4为输出的VBV Buffer状态图像,图像的标题包含了缓冲区被占用的最多和最小时的情况,以及最多和最小之间的差值(这个差值表示了对这个序列而言,最小需要的缓冲区大小)。从图像中看,这个序列没出现下溢情况,出现了一小段上溢但不严重,这个序列要保证不上下溢,需要的缓冲区最小为6.56Mbits。

图4、VBV状态图

github下载地址

https://github.com/ronnielige/py_hevc_bitrate_viewer.git

工具使用说明

  • 运行plot_bitrate_view_app.pyw前,需要先安装python运行环境,建议直接安装Python-xy(它包含的库很全,不需额外安装库,下载地址:http://python-xy.github.io/downloads.html
  • 先运行HM的TAppEncoder编码器,将输出结果保存为log文件。本项目里的 input_logs/hm265_G_footballdejia_abr6000.log 文件为一个标准的HM输出log文件。
  • 可以根据需要修改plot_bitrate_view_app.pyw中的代码,支持其他265编码器的输出log格式。

版权声明:本文为博主原创文章,未经博主允许请勿转载。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITRonnie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值