一、H265/HEVC
H265 也称之为 HEVC(英文全名:High Efficiency Video Coding)是新的一种编码技术,H265继承了很多 H264 的标准,包括 NALU、RBSP 等标准。而 H265 的压缩率高达1:200,远远高于 H264 的1:100。
H265的诞生:
随时代发展,人们对视频的清晰度越来越高。从之前的1920*1080的分辨率,到现在的2K、4K、8K分辨率。对网络传输来说如此高的分辨率如果还是用之前的H264压缩技术,那会导致传输的码率需要提高许多倍才能保证图像质量,否则会出现花屏、丢帧的情况。
但是现在绝大部分的网络设备的宽带和储存空间是有限的,所以采用大码率取传输2K以上的分辨率视频是不可取的。所以此时H265就随着需求的增加而出现。
H265码流结构
与H264一样也是遵循CVL和NAL层。他的起始码也是0x000001来进行分割NAL。一个普通的HEVC码流,结构为:
StartCode + VPS + StartCode + SPS + StartCode + PPS + StartCode + SEI + StartCode + I帧 +StartCOde + P帧 ... ...
VPS
->SPS
->PPS
->SEI
->I/P/B帧
VPS,SPS,PPS,SEI,一个I桢,一个P桢都可以成为一个NALU
他与H264的码流结构唯一的不同就是多了一个VPS。下面我们具体看看H265码流每个NALU单元的定义。在H264 部分讲过,NALU=头部信息+主题部分。头部信息代表后面跟着的是什么数据。
VPS
(视频参数集):00 00 00 01 40 01 (前面的00 00 00 01是起始字符40 01是VPS头部信息)
在H265编码中,第一个NAL单元就是VPS信息。VPS根据网络状态的好坏,决定传输数据的帧率。如果网络状态不好,则只传输基本的信息。否则就能传输基本信息加上增强层信息(SEI
)。这钟可以兼容各种视频编码的拓展和支持的编码叫做可分级视频编码
。SPS
(序列参数集):00 00 00 01 42 01
下面的在H264部分都有提到。SPS 主要包含的是一系列图像的宽、高、YUV格式和分辨率等基本信息;PPS
(图像参数集):00 00 00 01 44 01
PPS包含一张图像的参数信息。初学者容易混淆SPS和PPS,因为这两个都是储存参数集的结构。
其中SPS储存的是对一系列图像序列的参数,而PPS指的是序列中某一张具体图像的参数。SEI
(图像补充增强信息):00 00 00 01 4E 01
SEI帧是图像的额外信息,比如字幕、时间戳等信息。I帧P帧
(完整的图像):00 00 00 01 26 01
I帧:一帧完整的图像数据。P帧:向前压缩帧。
分析.h265二进制码流:
二、码流分析工具
- Elecard百度网盘
通过百度网盘分享的文件:h264码流分析工具 Elecard_streamEye
链接:https://pan.baidu.com/s/1uRt5mddLqDD2YLmo7583DA?pwd=9aqr
提取码:9aqr
通过百度网盘分享的文件:h265码流分析工具
链接:https://pan.baidu.com/s/1mYWdue-yY3SFOqmD4KJAvg?pwd=9aqr
提取码:9aqr
其中h264工具能分析h264和h265,h265分析工具只能分析h265。
- H264BSAnalyzer
# H264BSAnalyzer 使用方法 - H.264开源分析器
开源轻量的h264分析器!
参考博客# 视音频编解码学习工程:H.264分析器
上面只有源码,没有编译,完整程序:
通过网盘分享的文件:开源、H264分析器
链接: https://pan.baidu.com/s/1RhgrcWqbMV3gsf_2SftlKg?pwd=3eph 提取码: 3eph