文章目录

  • 1 准备工作
    • 1.1 H265视频文件
    • 1.2 参考文档
    • 1.3 参考博文
  • 2 分析
    • 2.1 NALU type
      • 2.1.1 H264
      • 2.1.2 H265
    • 2.2 实例分析

最近了解了一下H265的码流结构,对比H264的码流结构做了一些分析,简单记录一下,对输入的内容做个输出,防止忘记

1 准备工作

1.1 H265视频文件

稍后需要对H265视频文件进行分析,所以直接下载live555官网中提供的h265视频文件:
http://www.live555.com/liveMedia/public/265/

1.2 参考文档

H264码流结构文档直接参考海思中的说明:
《H.264 PC解码库软件开发指南.pdf》

H265码流结构文档参考:
《T-REC-H.265-201504-I!!PDF-E.pdf》

1.3 参考博文

h265 Nalu类型判断及 sps 数据解析
https://blog.csdn.net/machh/article/details/72190321

HEVC码流解析
https://blog.csdn.net/CrystalShaw/article/details/80624804

H.265/HEVC学习笔记之二:码流分析
https://blog.csdn.net/c250456789/article/details/62427968

2 分析

关于SPS/PPS/IDR/P/B等概念这里就不再详细说明。H264和H265的每一个NALU前缀码也是一样的,即“0x00 00 00 01”或者 “0x00 00 01”。

H265相比较于H264,多了一些概念,例如VPS,目前对这个参数还在了解中,详细了解可以参考博文:
HEVC编码结构:序列参数集SPS、图像参数集PPS、视频参数集VPS
https://blog.csdn.net/lin453701006/article/details/52797104

2.1 NALU type

2.1.1 H264

在H264中,每一个前缀码后面跟随的第一个字节即为NALU的语法元素,主要有三部分组成:
forbidden_bit(1bit),nal_reference_bit(2bits)(优先级),nal_unit_type(5bits)(类型)

所以,在H264中,我们如果需要获取NALU的类型,则可以通过以下方式进行解析:

nalu_type = first_byte_in_nal & 0x1F

nalu_type如下所示:

2.1.2 H265

而在H265中,每一个前缀码后面跟随的前两个字节为NALU的语法元素,主要有四部分组成:

forbidden_zero_bit(1):nal_unit_type(6):nuh_layer_id(6):nuh_temporal_id_plus1(3)

在文档中定义如下:

可以看到,NALU的语法元素由H264的一个字节变为两个字节,而nal_unit_type则为NALU的类型,因此我们可以通过以下获取NALU的类型:

int type = (code & 0x7E)>>1;

type的定义值如下:


上图,即为H265的NALU的TYPE,这里可以将上面的type简单的理解为如下我们需要的类型:
VPS=32 SPS=33 PPS=34 IDR=19 P=1 B=0

2.2 实例分析

如下,为下载的视频文件surfing.265的头部信息

如上我们看到了四个NALU包,每个NALU的头部信息为:

① 00 00 00 01 40 01  ---> (0x40 & 0x7E)>>1 = 32 ---> VPS
② 00 00 00 01 42 01  ---> (0x42 & 0x7E)>>1 = 33 ---> SPS
③ 00 00 00 01 44 01  ---> (0x44 & 0x7E)>>1 = 34 ---> PPS
④ 00 00 00 01 26 01  ---> (0x26 & 0x7E)>>1 = 19 ---> IDR

通过以上头结构也可以看到,NALU的与语法元素中,forbidden_zero_bit通常为0,nuh_layer_id通常为0,nuh_temporal_id_plus1通常为1。

H265码流结构分析相关推荐

  1. h264码流及h265码流结构分析,NAL头类型分析

    视频编码标准规定了编码后码流的语法语义,也就阐明了从比特流提取语法元素并进行解释的方法,也就是视频的解码过程.   1.h264码流结构解析:     H.264/AVC(Advanced Video ...

  2. H265视频码流结构分析

    目录 前言 H265码流结构 H265帧结构 H265档次介绍 前言 在音视频开发入门基础知识(视频入门篇)中介绍了H265的一些编码基础,本文会对H265编码后的视频流做一个详细的介绍.H264视频 ...

  3. H.264/H265码流解析

    H.264/H265码流解析 一.H.264码流解析 一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成 一个原始的 ...

  4. mp4box 封装H265码流

    一般我用HM编码出来的H265码流是NAL封装的裸码流, 但播放器处理的往往是有封装的码流.之前,我们傻傻地在播放器中间件里面搞了一套处理裸码流的parser, 随着各种需求的增多,感觉这是东西有些多 ...

  5. 音视频开发——H265码流解析

    概述 H.265技术的应用 编码技术主要运用于视频播放设备.软件应用以及拍摄.录制视频的设备.人们最熟悉的莫过于PPS网络视频播放器.在PC屏客户端产品上面,PPS已经于2013年初推出了基于H.26 ...

  6. python小工具------将H264/H265码流文件转为一帧一帧的JPEG文件

    一.功能 输入H264/H265码流路径,此脚本可以将对应的码流转为一帧一帧的JPEG文件,并保存到指定路径. 二.具体实现 import av import sysdef h265ToJpg_dem ...

  7. H264/H265码流类型

    文章目录 H.264码流 H.264码流格式 Annex B AVCC H.265码流 H.264码流 H264中,NALU类型1-5为视频帧,其余则为非视频帧.在解码过程中,我们只需要取出NALU头 ...

  8. H265码流分析详解

    一.HEVC的码流格式定义: 根据<T-REC-H.265-201504-I!!PDF-E>协议描述. 字节流格式由字节流NAL 单元语法结构序列构成.每一字节流NAL 单元语法结构包含有 ...

  9. 从原理到实践:使用Mediacodec编码H265并实现解码H265码流

    H265 H265,也称为HEVC(High Efficiency Video Coding),是一种高效视频编码格式.它是H264(AVC)的后继者,也是ITU-T和ISO/IEC联合开发的标准.相 ...

最新文章

  1. 4月25日 python学习总结 互斥锁 IPC通信 和 生产者消费者模型
  2. linux下安装编译网卡驱动
  3. 【收集】47种常见的浏览器兼容性问题
  4. 基于 Ubuntu 16.04 LTS 的 KDE neon 到达维护周期
  5. 文档对象模型dom_什么是文档对象模型,以及为什么应该知道如何使用它。
  6. centos7搭建apache服务器(亲测可用)
  7. new relic_新的Relic的Centurion Docker部署工具,DIY大脑扫描仪等
  8. linux mrtg,鳥哥的 Linux 私房菜 -- MRTG 流量偵測法
  9. 简单有用的jar包下载方法及地址
  10. android 拼图小游戏
  11. Android影视APP源码,影视APP源码,可打包成安卓苹果,亲测可用
  12. 网站安全测试报告模板
  13. 一枚php大马放送~
  14. Office在线协作(一)- 在本地服务器上安装ONLYOFFICE Docs Community Edition For Windows Server - 超详细安装教程
  15. excel如何冻结表格行或者列
  16. EF Core 日志跟踪sql语句
  17. 如何清理废弃pv和其对应的文件夹
  18. 使用SharedPreferences保存list
  19. 计算机专业用什么轴的键盘,机械键盘的哪个轴适合办公室使用
  20. 面向单片机编程(三)- 数码管显示

热门文章

  1. 腾讯Angel Graph团队刷新GNN最强榜单OGB世界纪录!
  2. 技术分享 | 一款功能全面的 MySQL Shell 插件
  3. 杨氏双缝干涉和牛顿环MATLAB模拟仿真
  4. 产品需求规格说明书写法
  5. js 打印helloworld
  6. Mysql与正则表达式笔记-松勤
  7. 如何用进度猫思维导图做项目管理?
  8. 正交梯度算子(一阶导)
  9. 总线板卡(1)——总线接口类型
  10. “每天都被自己帅到睡不着” 用古文怎么说?