H264编码器性能測试

版本号:0.1.0-beta

作者:石硕

更新:2014-04-13 15:54:08

============================================================

现在。H264已经成为视频行业的标准规范。企业中使用比較多的当数X264,开源,资源消耗又比較少。

首先,介绍一下常见的三大开源H264编码器:JM、X264、T264

JM H264的官方測试源代码,实现了264的全部特性,但程序结构冗长,编码复杂度高,不推荐商业应用。

X264 摈弃了264中对编码性能贡献小,但计算复杂度极高的新特性,推荐商业应用。

T264 编码与X264类似,可是解码器仅仅能解T264编码的,有点坑。

在使用H264编码器X264之前,我们先对其性能进行測试,以确定是否须要再次优化。

測试的流程例如以下:

1、到X264官网下载264源代码

官方站点:http://www.videolan.org/developers/x264.html

GIT地址:git://git.videolan.org/x264.git(注。X264最原始的源代码都是在linux下编译的。假设想要windows版的,请看以下)

windows版X264地址:http://doom10.org/index.php?topic=3.0(注:第三方移植的。自行推断是不是最新)

2、依据实际的业务须要,制定对应的測试标准

因为X264是依据H264的标准制作的。所以,H264标准以及曾经标准都是适用的。

实际应用中,会有不同的需求。比方说监控对帧率要求比較低,再比方说网络传输对码率要求比較高,又比方说在移动平台上使用对CPU MEM要求比較高。

以下是视频直播中使用到的:

分 辨 率:160×120  320×240  640×480

帧    率:10  15  20  25  30

码    率:128  160  256

编码延时:<= 200ms

码率精度:<= 15%

兼 容 性:标准H264解码器能够解码

操作系统:winXP  win7-x86  win7-x64

CPU     :AMD Athlon II X2 240(高配)  AMD SP145(低配)

MEM     :2GB

3、新建測试项目,调用X264库

新建VC项目。读取YUV序列文件(以下会介绍文件来源),编码,输出到H264文件

4、网上查找YUV序列的结构。了解都有哪些格式

YUV结构介绍英文版:http://www.fourcc.org/yuv.php

YUV结构介绍中文翻译版:http://blog.csdn.net/SearchSun/article/details/2443867

在这些YUV格式中。比較常见的是YUV420。一帧YUV420在文件里的排布例如以下,以CIF图像(352*288)为例:

Y信息 352*288 B

U信息 352*288/4 B

V信息 352*288/4 B

算出一帧数据的大小 = 352*288 +  352*288/4 +  352*288/4 。常见写作 352*288*3/2

5、网上查找YUV序列文件,或者自行制作

YUV測试序列下载地址:http://dpinglee.blog.163.com/blog/static/144097753201242254639795/ (这个是眼下网上能找到的最全面的)

从上面的链接中找到的最为规范的要数这个:http://sp.cs.tut.fi/mobile3dtv/stereo-video/

YUV格式有非常多种,再加上不同的參数配置,又会有非常多种。下载前一定要看清楚是否是自己须要的格式。由于这些測试序列文件通常都会比較大的

5.1、YUV序列文件制作方法

1)从网上下载随意格式的视频文件,AVI最好

2)安装 FFSetup.exe(中文名称格式工厂),把下载好的视频文件转换为AVI格式,转换參数中视频编码选H264

3)使用 avitoyuv.exe 把转换好的AVI文件转换为YUV文件

4)使用 YUVViewer.exe 验证转换的正确性

6、网上查找YUV序列文件播放器。验证YUV文件的有效性

找到YUV序列文件之后,使用 YUVViewer.exe 验证文件的正确性

YUViewer下载地址:http://ishare.iask.sina.com.cn/f/21603725.html

7、执行測试项目。读取YUV文件,输出H264文件

8、编码的过程中,观察H264编码器的各项指标,并做记录

在不同的參数配置下。观察以下的各项指标是否正常:

编码延时:能够在測试程序中输出日志查看

码率精度:同上

兼 容 性:使用H264visa能够正常播放就可以

CPU     :高配在2%以内  低配在4%以内

MEM     :?MB以内

9、网上查找H264文件播放器,验证编码的正确性

使用H264visa验证编码后H264文件的正确性

H264visa下载地址:http://ishare.iask.sina.com.cn/f/25002676.html (这个须要2新浪积分)

假设对X264编解码比較感兴趣,打算深入研究,能够从这里開始:http://www.rosoo.net/a/200908/7424.html,这篇是罗索实验室的文章。一个专业研究音视频,流媒体解决方式的站点。

工具推荐

1.软件开发必备FQ代理。低延迟(50ms),月费10元,详询(宝哥儿QQ1066690060)请自觉遵守国家法律法规

时间: 2024-08-29 10:15:51

H264编码器性能測试的相关文章

性能測试JMeter趟的坑之JMeter的bug:TPS周期性波动问题

先说下问题: 我在做性能測试时,使用JMeter搞了100个并发,以100TPS的压力压測十分钟,但压力一直出现波动.并且出现波动时JMeter十分卡,例如以下图: 周期性TPS波动 各种猜測: 所以開始找环境的各种原因,起初以为是JMeter的连接被"劫持"了,不然JMeter也不会卡的.所以,花了整整一下午时间.去排除压測机环境.被压測环境(TCP连接数.程序上的问题等等),但一直没找到原因. 后来.换成LR后,压測正常.所以開始怀疑是JMeter自身的问题. 原因找到: 后来想起

PAAS平台的web应用性能測试与分析

引言 为什么我会写这一篇博客,由于近期非常多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用訪问非常慢,有极少数应用甚至常常出现504超时现象.当然大家首先想到的是jae性能太差,这也是人之常情,往往出现什么错误的时候首先想到是别人的不好.工作中非常多同事也是这样,假设软件系统出现一个bug首先怀疑的肯定不是自己写的代码.今天花时间写这一篇博客主要就是告诉大家如何确定我们部署在PAAS平台(不不过JAE哦)web应用为什么慢?慢在哪儿了?有什么方法能够解决? 原因分析 出现訪问自己

3种浏览器性能測试

1.Javascript性能測试(Google的V8 Javascript引擎) 測试地址:http://v8.googlecode.com/svn/data/benchmarks/v6/run.html 谷歌浏览器版本号32 IE浏览器版本号11 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamt4cWo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthE

让你提前认识软件开发(42):性能測试

第3部分 软件研发工作总结 性能測试 [文章摘要] 对于通信领域的某些中间模块,其主要功能是对收到的消息进行处理然后发送,在两个模块之间充当了一个"桥梁"的作用.因为消息的条数有多有少,这就对其性能提出了要求. 本文结合作者的实际项目经验,描写叙述了性能測试的整个过程,并对性能測试过程中的一些常见问题进行了简单的介绍. 1. 前言 在完毕项目新需求的编码之后,对代码进行自測以验证功能的正确性是在所难免的.一般说来,花在測试上面的时间要很多其他一些.通过对自己所编敲代码的具体測试,开发者

系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式

PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高,外部系统接口.IO影响速度越慢.系统吞吐能力越低,反之越高. 系统吞吐量几个重要參数:QPS(TPS).并发数.响应时间 QPS(TPS):每秒钟request/事务 数量 并发数: 系统同一时候处理的request/事务数 响应时间:  一般取平均响应时间 (非常多人常常会把并发数和TPS理解混淆

mongodb3.0 性能測试报告 二

mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 内存:64G 磁盘: raid 10 操作系统 :centos 6.5 mongodb:3.0 java驱动:2.13.0 jdk:1.6 网络:千兆以太网 測试场景 : 单台monodb服务,一台同配置server作为压力server,数据量不超过内存大小. 库里背景为1亿条大小为10K的数据.

Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进行软件选用的决策. 眼下,已经有非常多能够监控android app 性能的工具能够供开发者使用.如:基于Eclipse插件体系的MAT,其通过生成.hprof文件对内存泄露情况进行排查:内存检測工具APT:提供CPU利用率实时曲线图,方便对照測试内存泄露问题[图0-1] 图 0-1  通过APT实

微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服

微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服 2014/10/08 · Testin · 开发人员訪谈 2013年11月1日,谷歌运行董事长施密特(Eric Emerson Schmidt) 踏进北京中关村电子卖场,但为何Testin云測CEO王军会全程陪伴并介绍中国安卓市场的状况?难道仅仅是王军的英文流利?那为何Testin云測又要先后拒绝腾讯.百度.阿里的投资? 这是新浪微博用户@硅谷之歌 的疑问,其认证资料为长春某公司的"外贸B2B事业部project师".

JNI/NDK开发指南(九)——JNI调用性能測试及优化

转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了.在Java中声明一个native方法,然后生成本地接口的函数原型声明.再用C/C++实现这些函数,并生成相应平台的动态共享库放到Java程序的类路径下.最后在Java程序中调用声明的native方法就间接的调用到了C/C++编写的函数了.在C/C++中写的程序能够避开JVM的内存开销过大的限制.处理高性能的计算.调用系统服务等功能. 同一时候也学习到