错误隐藏学习手记(五)
在H.264的研究中,我们可以看到目前有三种开源编码,很多测试都是在一个开源编码中实现的,这个开源编码就叫做:JM86。在这里呢具体介绍一下这三种开源编码:
一、三大开源编码器介绍
1、JM
H.264的官方测试源码,由德国hhi研究所负责开发。
特点:实现了264所有的特性,由于是官方的测试源码,所以学术研究的算法都是在JM基础上实现并和JM进行比较。但其程序结构冗长,只考虑引入各种新特性以提高编码性能,忽视了编码复杂度,其编码复杂度极高,不宜实用。
开发起始时间:2002.2
2、X264
网上自由组织联合开发的兼容264标准码流的编码器,创始人是一个法国人。X264在网上的口碑极佳。
特点:注重实用。和JM相比,在不明显降低编码性能的前提下,努力降低编码的计算复杂度,故X264摈弃了264中一些对编码性能贡献微笑但计算复杂度极高的新特性,如多参考帧、帧间预测中不必要的块模式、CABAC等。
开发起始时间:2004.6
3、T264
中国视频编码自由组织联合开发的264编解码器,编码器编码输出标准的264码流,解码器只能解T264编码器生成的码流。
特点:和X264的出发点相似,并吸收了JM、X264、XVID的优点。
开发起始时间:2004.10
附:
编码器版本
JM: JM86(选用的原因:90之后的版本主要是针对高保真的视频,不适合本文的测试序列),VC71编译。很多人选择这个平台估计是这个东西的效率最低,最好发paper。
X264: 2005.06.16版本,VC6编译
T264: 0.14版本,VC71编译
note: 三个编码器生成的都是release版本,通常release版本的执行速度比debug版本的执行速度快。
编码选项
由于x264和t264是基于baseline的,所以JM采用baseline profile.
另注:t264采用fast mode
三个编码器都采用默认的编码选项。
量化步长选择:24、28、32、36
二、对于H.264的简介:(摘自:http://blog.csdn.net/wcjy07220114/article/details/6155757)
从应用角度看,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也没用。
参考文档:
http://3y.uu456.com/bp-84cfef2b4b73f242336c5fb3-1.html
http://www.gpxz.com/diannao/tongxin/143863.html 基于ADSP-BF5619处理的H.264视频编码器设计
http://blog.csdn.net/wcjy07220114/article/details/6155757
http://blog.chinaunix.net/uid-11134731-id-33170.html?%2F10557_html=&page=3 FFMpeg.H264解码win开发环境搭建
http://www.doc88.com/p-0963761178097.html JM86流程图
错误隐藏学习手记(五)相关推荐
- 错误隐藏学习手记(六)
现在又出了H.265,我觉得有必要在错误隐藏方面也要跟进,采用和H.265标准一致的东西才好!那么H.264和H.265的区别在于哪里呢? 随着用户对监控视频质量的要求越来越高,高清视频在安防监控中的 ...
- C++学习手记五:C++流操作
为什么80%的码农都做不了架构师?>>> 写在前面: 说到流操作,则与程序的输入输出(简记为I/O)有关,本文讲述C++的一些I/O操作.本文所用的一些操作虽然都是基于标准输入 ...
- Direct3D学习手记五:纹理映射
本文介绍纹理映射:将2D图像映射到3D物体上 纹理坐标: 使用纹理映射将图片贴到3D物体表面必须物体的顶点指定纹理坐标,最多指定8级纹理坐标,本次我们只使用一级 可以像以下方式定义定点格式: //自定 ...
- 大数据学习系列:Hadoop3.0苦命学习(五)
传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...
- aspmaker学习手记
aspmaker学习手记 一.汉化提示信息 自动生成出来的网页中许多提示信息都是英文.修改x:\aspmaker\src\lang.xml文件,找到要改的地方比如把Please select改成&qu ...
- 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法
强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...
- nginx学习总结五(nginx反向代理)
nginx学习总结五(nginx反向代理) 2011-02-28 12:59:33标签:反向代理nginx负载均衡 原创作 ...
- webpack入门学习手记(一)
本人微信公众号:前端修炼之路,欢迎关注. 之前用过gulp.grunt,但是一直没有学习过webpack.这两天刚好有时间,学习了下webpack.webpack要想深入研究,配置的东西比较多,网上的 ...
- PostgreSQL学习手册(五) 函数和操作符
PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符: 常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符: 下面是Po ...
最新文章
- |DataDirectory|的使用
- Discuz!X安装配置
- RFID位置数据这么多,企业应该怎么利用?
- 【渝粤题库】广东开放大学 标准的研制与编制 形成性考核
- cubemx串口的发送与接收_串口收发模块设计
- 第三季度营收不及预期 拼多多收盘跌超15%
- 大数据_Flink_数据处理_运行时架构6_slot和并行度的关系---Flink工作笔记0021
- python locust post 参数拼接md5_Locust性能测试--接口加密参数关联
- JAVA基础【刘意】27天全集【Day02小结】
- 谷歌app使用的是什么字体_如何使用Google字体
- IEEE年度薪酬报告发布!美国程序员薪资中位数7年来首次下降2.4万
- java phaser 实用场景_猿灯塔-Phaser 使用介绍
- Matlab中ind2sub函数的使用
- css横排文字光影效果_css实现发光文字,以及一点点js特效
- 在office2016中,安装mathtype6.9后出现的dll文件缺失问题
- 尘埃粒子计数器帮助实时监测半导体车间空气中的粒子数
- Mac 安装CodeBlocks
- Android学习之利用Intent传递数据
- Java细枝末节:运算符优先级表
- 【电商项目实战】新增收货地址(详细篇)
热门文章
- 【modelsim和debussy】设置
- 异常---编译时异常和运行时异常:IO异常、NullPointerException、ArrayIndexOutBoundsException、ClassCastExoeption
- arcgis10之生成无背景色的png图片
- qq安装路径无效Linux,QQ提示安装路径无效您没有权限的两种解决办法
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
- mysql 推送微信公众号_10分钟完成微信公众号第三方平台全网发布
- SwiftUI 2 redacted新功能超实用的占位符功能(教程含源码)
- CH340 和 CH341 使用心得
- 跨平台应用即将死亡!
- Java计算机毕业设计水果购物商城源码+系统+数据库+lw文档