H264在分辨率高的情况下缺点

1,94年h264开始研制。
2,现在屏幕变的越来越大。假设h264以16X16进行编码,但我们的屏幕宽达到了32000像素。编码一帧画面需要400000个宏块。94年的时候也没有3D视频。基于以上两种原因,h265就应运而生了。

标题h264与h265的区别

1,以H242,sps帧为例,其帧类型用16进制表示是67,2进制就是8位。

如果要表示5种帧类型,根本不需要8位(3位就可以)。那其它5位代表什么呢?H264只有5种帧类型?
0110 0111:第一位表示帧是否可用,0表示可用,1代表不可用。解码的时候,只解码可用的帧。
解码器同时把多个帧(比如sps,I帧,p帧,b帧)读取到内存,这个时候解码顺序按照帧是否重要来解码。
第二位和第三位表示重要的等级,11>10>01>00。四个选项正好需要2位表示。在解码器忙不过来的时候,直接丢掉不重要的帧。
后面5位表示帧类型,h264帧类型有32(2的五次方,正好是最后5位)种。

p帧b帧就是不区分,IDR可以理解为I帧(但发过来I帧不等于IDR)。序列参数集就是sps(Sequence Paramater Set)。图像参数集就是pps(picture parameter set)。
2,我们自己怎么计算帧类型(代码中没有计算机可供使用)
1与1等于1,其余三种情况都等于0。
我们看看如何求帧类型。
67是01100111,因为我们只关心后5位,所以我们用00011111(16进制就是1f)去与&该数字。与&完后得到的数字是0000 0111,前面的0可以去掉,所以最终结果是111,十进制就是7。查上面的表可知7就代表sps(序列参数集)
我们现在看看如何求该帧的重要性。
67是01100111,因为我们只关心第二三位,所以用0110 0000去与,得到结果0110 0000。然后位移5。最终得到11。
3,我们模拟下解码器是如何解码的
解码器得到一些帧数据,先判断该帧是否可用,1的话就直接丢弃调,如果是0,就把她们放到一个队列中,按照重要性排序,然后按照重要性输出。输出后判断帧类型,如果是sps帧,就会进入sps解码。如果是其它帧类型( 68pps帧, 65I帧,41P帧,01B帧),就进入其它解码(这里类似个swich语句)。如果发生卡顿就会抛弃B帧(B帧解码就比较耗时)。

4,与H264相比,H265宏块变大;H265最大的宏块为64X64。H264最大宏块为16X16(在细节比较多的情况下,h265压缩率与h264差不多,因为也划分为很多小的宏块)
5,与H264相比,H265多了VPS帧,叫3D配置帧。
6,与H264相比,H265帧类型有64种。
7,与H264相比,H265用16位表示(两个字节)帧。
比如 VPS帧 4001。
0100 0000 0100 0001。
第一位 代表是否可用(1不可用,0可用)
第2-7位 代表帧类型
第8-13位,代表帧ID(H264没有)
第14-16位,代表重要性
求帧类型,40首先与上01111110(7E),得到0100 0000,然后右移一位(除以2),得到0100000(十进制就是32)。查表后得知,帧类型正好是VPS帧
8,H264于H265存储不同
H264如何存储

我们把图片解析成n个宏块

我们看直播,收到的就是封装好的h264,按照一定规则解码h264,就能得到对应的画面

NAL与VCL的关系类似IP与TCP
切片数据就是在VCL层。


一帧就包含了很多切片

预测方向

残差数据:剩下的数据就是残差数据。比如左面像素和上面像素

9,H265如何存储
首先预测方向,h264的预测方向只有0-8(详见上图),但在H265中有35种

王学岗——H265编码原理详解与码流分析(对应第五节课)相关推荐

  1. 并发编程五:java并发线程池底层原理详解和源码分析

    文章目录 java并发线程池底层原理详解和源码分析 线程和线程池性能对比 Executors创建的三种线程池分析 自定义线程池分析 线程池源码分析 继承关系 ThreadPoolExecutor源码分 ...

  2. Huffman 编码原理详解(代码示例)

    1.概述 huffman编码是一种可变长编码(  VLC:variable length coding))方式,于1952年由huffman提出.依据字符在需要编码文件中出现的概率提供对字符的唯一编码 ...

  3. urlencode 与urldecode 函数字符编码原理详解

    中文字符编码研究系列第五期,详解 urlencode()与urldecode()函数字符编码原理,两个函数分别用于编码 URL 字符串和解码已编码的 URL 字符串,实现对中文字符的编码 <if ...

  4. 王学岗视频编码————视频编解码基础与MediaCodec编解码(对应1234节)

    为什么要学习音视频 核心竞争力,高端人才相当缺乏,技术迭代慢, 为什么音视频学不好 资料比较少,音视频最难的地方在于编码,没有形成完整的体系 关于音视频编码 上 1,视频文件:MP4,RMVB, AV ...

  5. (推荐阅读)H264, H265硬件编解码基础及码流分析

    需求 在移动端做音视频开发不同于基本的UI业务逻辑工作,音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,v ...

  6. python压缩算法_LZ77压缩算法编码原理详解(结合图片和简单代码)

    前言 LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年.LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77.鉴于其在数据压缩领域的地位,本文将结合图 ...

  7. Huffman编码原理详解

    转载自这里 1.概述      huffman编码是一种可变长编码(  VLC:variable length coding))方式,于1952年由huffman提出.依据字符在需要编码文件中出现的概 ...

  8. 8B/10B编码原理详解、Verilog实现及在JESD204B中的应用

    目录 1.8B/10B介绍 2.原理 3.Verilog实现 4.实例:在JESD204B中的应用 参考资料: 1.8B/10B介绍 8B/10B编码的目的是防止串行的数据出现长时间的连0连1,因为这 ...

  9. 编码原理详解(五)---熵编码(CAVAL)

    上一篇我们讲到了ZigZag扫描,经过这一扫描之后,发现原本是4*4的像素矩阵,就变成了一连串的数字,可以说是二维到一维的一个转换吧,而且经过ZigZag扫描后,一连串的数字的最后大部分为0,以及一些 ...

最新文章

  1. 网络中最常用的网络命令(6)-完整参数
  2. 社交系统/社群系统ThinkSNS+ alpha.2 版本发布!
  3. sdut 2139BFS
  4. unity3d为对象添加脚本的两种方法
  5. LeetCode算法题-Jewels and Stones(Java实现)
  6. 汇编程序基本原理知识笔记
  7. C# VS2017 winForm 使tableLayoutPanel 不闪烁
  8. 计算机科学 —— 时间戳(timestamp)
  9. android 通讯录恢复,通讯录恢复
  10. 人手一份!Vue 3 中文文档来啦!
  11. 无敌论坛_无敌分享网_无敌资源网|专注CG教程和素材分享
  12. Kmeans算法思想
  13. 无线网主dns服务器,无线网的dns怎么设置
  14. erpc的设计和工作机制
  15. 电脑b站html加速播放,b站视频怎么加速播放-将B站视频调速播放的方法 - 河东软件园...
  16. 【初级算法】10.有效的数独
  17. 注意!出现这十种症状,说明你不适合做程序员
  18. vue 组件自己不能删除自己,$destroy从组件树上删除+从视图上消失
  19. 交通·未来系列学术活动第1期:时空交通数据预测方法及应用
  20. python零基础自学英语软件下载_GitHub - geniux-TI/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

热门文章

  1. 国产自主GPU架构“天狼星”在北京亮相
  2. 记一次30位密钥长度RSA加密破解过程
  3. VS2013密钥破解
  4. 在 Zend Studio 12.5 里下断点调试运行 PHP 源代码
  5. 如何解决新增不成功方法
  6. 金融系统IT系统的架构前端体系特点 (一)
  7. Arcgis小技巧【10】——字段计算器的简单用法和示例
  8. smbj使用smb2及smb3协议遍历文件夹或者文件的方法
  9. Visio 绘图完如何弄到word中调整位置
  10. 怎么删除网络里共享的计算机,怎么删除MAC电脑“网络”里的局域网电脑图标或… - Apple 社区...