错误隐藏学习手记(五)

2023-11-15

      在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流程图 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误隐藏学习手记(五) 的相关文章

  • STM32 CAN通信的学习笔记总结(从小白开始)

    知识来源于互联网 回馈于互联网 目录 1 总体概述 1 1 基本概念 1 2 通讯方式 1 3 为什么使用CAN 1 4 CAN的协议及组成 2 上帝视角看CAN的通讯过程 2 1 数据传输原理实现 2 2 通信的整个过程 2 2 1 空闲
  • Python读写excel文件

    1 使用pandas库读取Excel 最常用 pandas可以读取各种各样格式的数据文件 一般输出dataframe格式 如 txt csv excel json 剪切板 数据库 html hdf parquet pickled文件 sas
  • FSCapture注册码

    企业版序列号 name bluman serial 序列号 注册码 VPISCJULXUFGDDXYAUYF 转载于 https www cnblogs com wshsdlau p 4396184 html
  • HTML<DIV>常用标签

    目录 1 什么是DIV 1 1 div是什么意思 1 2 div标签怎么用 1 3 div布局优势 1 4 DIV作用是什么 1 5 有哪些DIV方式 1 5 1行内样式 1 5 2内嵌样式 1 5 3外部样式 1 6 样式使用规则 2 D
  • 使用队列实现stack

    两个队列实现一个stack q1只保持一个元素即可 多余的转换到q2当中 出队列元素 有两种情况 q1不为空 直接出队列 如果连续出队列 q1可能为空 需要q2的部分元素放到q1当中去 说白了就是元素捣鼓来捣鼓去的问题即可 class My
  • Linux-安装redis6.2.1及主备复制模式(replication)

    Linux 安装redis6 2 1 下载redis6 2 1资源 上传至安装目录 解压及编译 解压 修改名称 编译 修改配置文件 主节点 从节点 启动及测试 启动 主节点 从节点 测试 下载redis6 2 1资源 地址 https re
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:101-120)

    第101题 可用于多种路由协议 由 if match 和 apply 子句组成的路由选择工具是 A route policy B IP Prefix C commnityfilter D as path filter 答案 A 解析 Rou
  • QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent

    建了一个对话框 我不想把边框去掉 只想去掉关闭按钮 setWindowFlags windowFlags Qt WindowCloseButtonHint Qt WindowContextHelpButtonHint 结果那个问号的按钮去掉

随机推荐

  • c++序列化以及反序列化实现

    1 什么是序列化和反序列化 当我们在写程序时 比如说我们自定义了一个实体类Person 然后在程序中创建一个该实体类对象 并给对象赋了一些值 但是我们想将这些数据发给我们的其他的程序员朋友 让他们也可以调用我们创建的这个实体类并使用我们的数
  • 数据库实时同步利器——CDC(变化数据捕获技术)

    在进行数据ETL过程中 我们经常需要通过周期性的定时调度将业务数据按照T 1的方式同步到数据仓库中 进行数据分析处理 最终通过BI报表展示给最终用户 但这种方式实时性较差 用户往往只能看到昨天的数据 会影响用户决策的及时性 而如果用户要近实
  • 更换持续集成工具,从 Travis 到 Github Actions

    我真傻 真的 单单受文档的推荐就选择了 Travis 作为部分项目的持续集成工具 没有料到它早已于 2020 年 12 月更换了免费政策 不再为开源项目提供免费的用于持续集成使用的 Credits 了 当赠送的 10000 个点数用完 就需
  • 【踩坑经历】Java Long 类型传给前端损失精度的问题

    最近在做一个 SpringBoot Vue 的项目 持久层框架用的是 MyBatis Plus 然后遇到了一个问题 一起来看下怎么回事 这个项目就是一个文章收藏器 可以收藏一些技术文章 然后可以选择星标 以便查找这篇文章 那么点击星标的按钮
  • 服务器的tomcat调优和jvm调化

    下面讲述的是tomcat的优化 及jvm的优化 Tomcat 的缺省配置是不能稳定长期运行的 也就是不适合生产环境 它会死机 让你不断重新启动 甚至在午夜时分唤醒你 对于操作系统优化来说 是尽可能的增大可使用的内存容量 提高CPU 的频率
  • 操作系统12----进程间通信IPC

    进程间通信IPC 1 进程通信 IPC Inter Process Communication 1 1直接通信 1 2间接通信 1 3阻塞通信 1 4非阻塞通信 2 信号 Signal 3 管道 pipe 4 消息队列 5 共享内存 1 进
  • 基于面板数据的熵值法介绍与实现

    熵值法是一种基于信息熵理论的客观赋值方法 即数据越离散 所含信息量越多 对综合评价影响越大 目录 一 基于面板数据熵值法介绍 二 R语言实现 参考文献 一 基于面板数据熵值法介绍 传统的熵值法有个弊端 只能针对于截面数据 即根据某一年 k
  • MySQL创建表时提示:1067 - Invalid default value for ‘sex‘

    问题 在创建表的时候如果有中文 则会提示 1067 Invalid default value for sex 比如 创建信息表 create table userInfo card id int primary key auto incr
  • unity 内嵌网页简单流程(3D WebView 3.14.1)

    我是用于 web 平台 特此记录 3D WebView 主要实现在unity 中制作网页浏览器 可使用平台 很强大 其他类似插件都有平台缺陷 Android iOS UWP Hololens Windows macOS WebGL 0 插件
  • 制造行业主数据同步集成

    主数据是描述企业核心业务实体的数据 是企业核心业务的主要构成 各个订单 合同以及业务的主体 在企业内部被重复 共享应用的数据 主数据跨越企业各个业务部门以及各类业务系统 是应用系统间数据交互的基础 近期一直北方某制造业进行主数据治理工作 谈
  • React Router源码解析

    虽然React Router已经到了V6版本了 但在我们项目中 目前主要用的还是React Router的V5版本 所以此处我们从V5版本着手 去了解前端路由的实现原理 目标 希望收获 前端路由的基本原理 React Router 的实现原
  • Scanner的.next()以及.nextLine()各自代表什么意思

    String str new Scanner System in nextLine String str new Scanner System in next next 方法一次读取一个无间隔子串 比如 TAB 空格 回车符 的时候 会终止
  • Chromium OS 初体验

    Chromium OS可是早有耳闻 但是一直没有尝试 最近很多评论甚至认为会对Windows和Mac都能够造成压力 于是迫不及待的想尝试一下了 百度下了官网 官网很贴心 不光给了用于写入U盘的镜像文件 最初是针对上网本的 所以自然不是刻录成
  • Python 基础知识6 字典

    字典 定义字典 d key1 22 key2 meng print d print type d 访问字典里的值 dict Name Runoob Age 7 Class First print dict Name dict Name pr
  • 在Unity中编写单元测试

    最近在我忙于我的最新项目时 我一直在思考 我如何能单元测试代码 我知道如果我先把它搁一边 在编写一大段游戏代码后 我可能再也不会回头来写测试了 编写单元测试对我有两个挑战 首先 游戏不同于其他类型的软件 没有好的代码分段来处理好输入 以及图
  • Hello World

    编写思路 创建 Java 源文件 将源文件编译为 class 文件 运行 class 文件 编写代码 代码块 我的第一个 Java 程序 class 类 Java 程序基本组成单位 HelloWorld 为类的名称 public class
  • 企业微信自建内部应用Demo源码,附在线Demo及视频讲解,创建测试公司及测试应用简单配置即可使用

    自建内部应用Demo源码 前端vite vuejs https github com liyuexi qywx vuejs qywx vuejs 企业微信自建内部应用demo源码前端vite vuejs https github com l
  • 最简单的实现[三栏布局中间自适应]方法

    一 float margin 左盒子 左浮动 右盒子 右浮动 中间盒子 左右加margin 注意 盒子的书写顺序是左右中 div class container div class left w div div class right w
  • docker 安装 nginx1.23.2

    注意 nginx 不能提前挂载配置 html 目录可以提前挂载 但提前挂载了访问默认nginx页面就没有了 部署前端时可提前挂载 所以我们先提前创建副本 1 提前创建挂载文件 创建容器副本 主要作用与获取配置文件 先创建一个没有的nginx
  • 错误隐藏学习手记(五)

    在H 264的研究中 我们可以看到目前有三种开源编码 很多测试都是在一个开源编码中实现的 这个开源编码就叫做 JM86 在这里呢具体介绍一下这三种开源编码 一 三大开源编码器介绍 1 JM H 264的官方测试源码 由德国hhi研究所负责开