视频源数据: tag头+视频头+视频源数据(如果当前为头信息,为具体相应的头信息,头信息详见FLV科普10) (如果为视频数据,一般每个tag只包含一帧数据,包含多个NAL信息,NAL长度 + NAL数据 + NAL长度+ NAL数据........)= tag
如果CodecID=2,为H263VideoPacket;
如果CodecID=3,为ScreenVideopacket;
如果CodecID=4,为VP6FLVVideoPacket;
如果CodecID=5,为VP6FLVAlphaVideoPacket;
如果CodecID=6,为ScreenV2VideoPacket;
如果CodecID=7,为AVCVideoPacket;
标准文档:
以下图选定区域的一个tag为例:
tag头信息:占11字节 09 00 09 D8 00 00 00 00 00 00 00 视频数据(0x 09 size = 0x 00 09 D8 时间戳:00 00 00 00 值:0 00:00:00:000)
视频头信息:占1字节 值0x17 关键帧 H.264标准
AVCPacketType 占用1字节 仅在AVC时有此字段 当前值:0x01 表示 AVC普通NAL单元
CompositionTime 占用24为相对时间戳 如果AVCPacketType=0x01, 为相对时间戳;其它,均为0;当前值:0x 00 00 50 (值80)当前的的解码时间:00:00:00:000 显示时间:00:00:00:000 + 80 = 00:00:00:080
NAL单元的长度: 占4字节 当前值: 0x 00 00 02 A0 (值:672) 说明下一个NAL单元的长度为672字节(已经去掉nal单元头0x00001等信息)
解析NAL单元: 当前NAL单元(0x 06 05 FF FF FF 9C .....00 00 07 2B,共672字节)06 表示当前为SEI信息
NAL单元的长度:占4字节 当前值:0x 00 00 07 2B 值:1835
解析NAL单元: 当前NAL单元(0x 65 88 81 ... E6 4E C2 81 共1835字节)
当前tag总字节 = 11(tag头)+ 5 (视频头) + 4 (NAL长度标识字节占位) + 672 (NAL)+ 4 (NAL长度标识字节占位) + 1835(NAL) = 2531