H.265协议说明

本文介绍了通过RTMP协议推流,基于FLV封装的H.265流协议格式。

简介

通过RTMP协议推H.265流时,在FLV的VideoTagHeader增加CodecID枚举类型,标识当前流是H.265视频流。

协议

视频流格式为H.265流时,FLV VideoTagHeader的CodecID字段值为 12
VideoTagBody以及avcconfig都是标准格式。
avcconfig填的裸的SPS、PPS、VPS。

VideoTagHeader

VideoTagHeader包含特定的视频元数据。

字段类型描述
FrameTypeUB[4]视频帧类型,定义了以下值:
1:关键帧(对于AVC / HEVC,可搜索)
2 :帧间(对于AVC / HEVC,不可搜索)
3:disposable inter frame(只针对H.263)
4 : 生成的关键帧(仅供服务器使用)
5 : 信息/命令帧
CodecIDUB[4]编码类型:
2: Sorenson H.263
3 : Screen video
4 : On2 VP6
5 : On2 VP6 with alpha channel
6 : Screen video version 2
7 : AVC
12 : HEVC
AVCPacketTypeIF CodecID ==7/12
UI8
0:AVC/HEVC序列头
1: AVC/HEVC NALU
2:AVC/HEVC序列结束(不需要或不支持较低级的NALU序列ender)
CompositionTimeIF CodecID ==7/12
SI24
当AVCPacketType =1,CompositionTime表示PTS(显示时间)相对于DTS(解码时间)的偏移值,否则为0,单位:ms

VideoTagBody

VideoTagBody包含视频帧有效负载。

字段类型描述
VideoTagBodyIF FrameType ==5
UI8
ELSE (
IF CodecID ==2
H263VIDEOPACKET
IF CodecID ==3
SCREENVIDEOPACKET
IF CodecID ==4
VP6FLVVIDEOPACKET
IF
CodecID ==5
VP6FLVALPHAVIDEOPACKET
IF CodecID ==6
SCREENV2VIDEOPACKET
IF CodecID ==7
AVCVIDEOPACKET
IF CodecID ==12
HEVCVIDEOPACKET

)
视频帧有效载荷或帧信息
当FrameType=5时,Tag不再是视频负载数据,而是一个UI8字段,含义如下:
0:客户端寻找视频帧序列的开始
1:客户端寻找视频帧序列的结束
对于每个数据包的解析,请参考FLV和SWF标准文档中的说明。

文档是否有解决您的问题?

有帮助 没帮助
提交成功,非常感谢您的反馈!

反馈

TOP