版本号: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)请自觉遵守国家法律法规

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

  1. mongodb3.0 性能測试报告 一

    mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 ...

  2. Window平台搭建Redis分布式缓存集群 (一)server搭建及性能測试

    百度定义:Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对很多其它.包含string(字符串).list(链表).set(集合).zset(sort ...

  3. mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry &#39;xxx&#39; for key &#39;PRIMARY&#39;

    mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysql ...

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

    PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...

  5. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  6. LR杂记 - 性能測试指标及经常使用的监控工具

    监控指标 性能測试通常须要监控的指标包含: 1.serverLinux(包含CPU.Memory.Load.I/O). 2.数据库:1.Mysql 2.Oracle(缓存命中.索引.单条SQL性能.数 ...

  7. PHP归档phar性能測试

    PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java™ 技术的 JAR 归档,它同意使用单个文件打包应用程序.这个文件里包括运行应用程序所需的全部东西.该文件不同于单个可运行文件,后 ...

  8. Redis源代码分析(十三)--- redis-benchmark性能測试

    今天讲的这个是用来给redis数据库做性能測试的,说到性能測试,感觉这必定是高大上的操作了.redis性能測试.測的究竟是哪方面的性能,怎样測试,通过什么指标反映此次測试的性能好坏呢.以下我通过源代码 ...

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

    微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服 2014/10/08 · Testin · 开发人员訪谈 2013年11月1日,谷歌运行董事长施密特(Eric Emerson Sch ...

随机推荐

  1. 剑指Offer(书):剪绳子

    题目:给你一根长度为n的绳子,请把绳子剪成m段,每段绳子的长度记为k[0],k[1]....,k[m].请问k[0]xk[1]x...,k[m]可能的最大乘积是多少.例如:长度为8剪成2 3 3 得到 ...

  2. 【笔记】linux x86漏洞利用

    0x1任意代码执行是如何实现的? 任意代码执行使用一种叫“覆盖返回地址”的技术来实现.这种方式使得攻击者重写位于栈上的返回地址,这将导致任意代码执行.

  3. ASP.NET MVC______VS2012

    1,在VS2010中,选中指定的代码段,可以拖拽到工具箱中,形成标签,以后还想书写类似的代码,双击鼠标即可. 2,在VS2012中,可以在注释上标注//TODO:我是注释 这样,注释就会出现在任务列表 ...

  4. ES6(数据结构)

    一.set 用法 set 对数组进行转化 添加重复元素不会生效 (应用:去重复功能)转化过程不会有数据类型的转换 添加.删除.判断是否存在的方法 2. 读取(遍历)的几种方法 二.WeakSet 与S ...

  5. luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法

    BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. ...

  6. selenium之文件上传

    文件上传是所有UI自动化测试都要面对的一个头疼问题,今天博主在这里给大家分享下自己处理文件上传的经验,希望能够帮助到广大被文件上传坑住的seleniumer. 首先,我们要区分出上传按钮的种类,大体上 ...

  7. AutoItLibrary之键盘操作(send)

    最近有人问到我键盘操作用什么库?用到库里面的哪个方法?我在这里总结一下,第一次写,有片面的地方还请指出,一块进步.1.首先,用到的库是AutoItLibrary,用到的方法是send:按F5可用看到 ...

  8. PTA 02-线性结构4 Pop Sequence (25分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/665 5-3 Pop Sequence   (25分) Given a stack wh ...

  9. bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规

    骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...

  10. struts2 标签库使用

    [引用]json 使用 [引用]struts2 标签库使用 2011-05-11 16:13:00|  分类: 默认分类 |  标签: |举报 |字号大中小 订阅 本文转载自kangzye<st ...