https://blog.csdn.net/CrystalShaw/article/details/109527689
根据《T-REC-H.265-201504-I!!PDF-E》协议描述。
## 一,HEVC的码流格式定义
字节流格式由字节流NAL 单元语法结构序列构成。每一字节流NAL 单元语法结构包含有一个起始编码前缀,后面跟随一个nal\_unit(NumBytesInNALunit)语法结构。它可能(一定情况下,它应该)包含一个额外的zero\_byte 语法元素。它也可能包含一个或多个额外的trailing\_zero\_8bits 语法元素。当为第一个字节流NAL 单元时,也可能包含一个或多个额外的leading\_zero\_8bits语法元素。
![](https://img-blog.csdn.net/20180608162301887?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NyeXN0YWxTaGF3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/2018060816240518?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NyeXN0YWxTaGF3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
## 二,NAL\_TYPE定义
~~~cpp
/** * Table 7-1: NAL unit type codes */enum HEVCNALUnitType { HEVC_NAL_TRAIL_N = 0, HEVC_NAL_TRAIL_R = 1, HEVC_NAL_TSA_N = 2, HEVC_NAL_TSA_R = 3, HEVC_NAL_STSA_N = 4, HEVC_NAL_STSA_R = 5, HEVC_NAL_RADL_N = 6, HEVC_NAL_RADL_R = 7, HEVC_NAL_RASL_N = 8, HEVC_NAL_RASL_R = 9, HEVC_NAL_VCL_N10 = 10, HEVC_NAL_VCL_R11 = 11, HEVC_NAL_VCL_N12 = 12, HEVC_NAL_VCL_R13 = 13, HEVC_NAL_VCL_N14 = 14, HEVC_NAL_VCL_R15 = 15, HEVC_NAL_BLA_W_LP = 16, HEVC_NAL_BLA_W_RADL = 17, HEVC_NAL_BLA_N_LP = 18, HEVC_NAL_IDR_W_RADL = 19, HEVC_NAL_IDR_N_LP = 20, HEVC_NAL_CRA_NUT = 21, HEVC_NAL_IRAP_VCL22 = 22, HEVC_NAL_IRAP_VCL23 = 23, HEVC_NAL_RSV_VCL24 = 24, HEVC_NAL_RSV_VCL25 = 25, HEVC_NAL_RSV_VCL26 = 26, HEVC_NAL_RSV_VCL27 = 27, HEVC_NAL_RSV_VCL28 = 28, HEVC_NAL_RSV_VCL29 = 29, HEVC_NAL_RSV_VCL30 = 30, HEVC_NAL_RSV_VCL31 = 31, HEVC_NAL_VPS = 32, HEVC_NAL_SPS = 33, HEVC_NAL_PPS = 34, HEVC_NAL_AUD = 35, HEVC_NAL_EOS_NUT = 36, HEVC_NAL_EOB_NUT = 37, HEVC_NAL_FD_NUT = 38, HEVC_NAL_SEI_PREFIX = 39, HEVC_NAL_SEI_SUFFIX = 40,};
~~~
## 三,实例分析
1,截取一段HEVC视频码流
![](https://img-blog.csdn.net/20180608163732200?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NyeXN0YWxTaGF3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2,elecard对应该段码流的分析结果。
![](https://img-blog.csdn.net/20180608163901366?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NyeXN0YWxTaGF3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3,具体分析说明:
第一个NALU:0x00000001 NAL起始码 0x40>>1,0x20,十进制32,为NAL\_VPS(Video Parameter Set视频参数集)。
第二个NALU:0x00000001 NAL起始码 0x42>>1,0x21,十进制33,为NAL\_SPS(Sequence Parameter Set序列参数集)。
第三个NALU:0x00000001 NAL起始码 0x44 >> 1,0x22,十进制34,为NAL\_PPS(Picture Parameter Set图像参数集)。
第四个NALU:0x00000001 NAL起始码 0x4E >> 1,0x27,十进制39,为NAL\_SEI\_PREFIX(Supplemental enhancement information)
第五个NALU:0x00000001 NAL起始码 0x26 >> 1,0x13,十进制19, 为NAL\_IDR\_W\_RADL(Instantaneous decoding refresh)
- 序言
- 编解码
- H264
- HEVC码流解析
- H264编码原理
- 多媒体封装
- MP4
- 学好 MP4,让直播更给力
- AAC
- FLV
- 流媒体协议
- RTSP
- RTCP
- RTP
- H265 RTP封包笔记
- SDP
- RTMP
- RTMP URL
- rtmp url基础
- webrtc
- 编译
- 最简单的编译webrtc方案
- Webrtc音视频会议之Webrtc“不求甚解”
- Webrtc音视频会议之Mesh/MCU/SFU三种架构
- 音频传输之Jitter Buffer设计与实现
- Janus
- Webrtc音视频会议之Janus编译
- Webrtc音视频会议之Janus源码架构设计
- webrtc服务器-janus房间管理
- 源码分析
- WebRTC视频JitterBuffer详解
- 走读Webrtc 中的视频JitterBuffer(一)
- 走读webrtc 中的视频JitterBuffer(二)
- webrtc视频帧率控制算法机制
- 目标码率丢帧-1
- 目标帧率丢帧-2
- 29 如何使用Medooze 实现多方视频会议
- FFmpeg
- FFmpeg编译
- Window10下编译最新版FFmpeg的方法步骤
- FFMPEG静态库编译
- ffmpeg实现画中画
- FFmpeg推流器
- ffmpeg-aac
- OpenCV
- OpenCV学习笔记——视频的边缘检测
- 图像特征点匹配(视频质量诊断、画面抖动检测)
- 图像质量诊断