打包H264码流到FLV文件

本文介绍了如何将H264码流打包到FLV文件中,涉及多slice帧的结构、PPS数据长度计算、AVC Profile和Level的获取以及lengthSizeMinusOne的设定。内容包括slice数据的组织方式、每个SPS和PPS数据长度的表示方法。
摘要由CSDN通过智能技术生成
FLV格式非常简单,头信息数据量很少,适合网络传输,因此被广泛的应用。
1. H264 NALU结构
    h264 NALU:  0x00 00 00 01 | nalu_type(1字节)| nalu_data (N 字节) | 0x00 00 00 01 | ...
                      起始码(4字节)          类型                            数据               下一个NALU起始码
             H264 NALU固定以 0x00 00 00 01为起始,NALU_data部分不会出现这个起始码;
             在找到下一个起始码之前,当前NALU数据长度不知;
             NALU_type 1字节,定义为:1比特禁止位 | 2比特 重要性指示位  | 5比特 类型
                                                             固定为0           11重要 不能少          1-12 由h264使用
                                                                                    00不重要 可以丢弃     
             几个常用Nalu_type:
                               0x67 (0 11 00111) SPS    非常重要       type = 7
                               0x68 (0 11 01000) PPS     非常重要       type = 8
                               0x65 (0 11 00101) IDR帧  关键帧  非常重要 type = 5
                               0x61 (0 11 00001) I帧        重要         type=1    非IDR的I帧 不大常见
                               0x41 (0 10 00001) P帧      重要         type = 1     
                               0x01 (0 00 00001) B帧     不重要        type = 1
                               0x06 (0 00 00110) SEI     不重要        type = 6
2. FLV tag
    前面讲过FLV文件就是由无数个Tag组成的,Tag有Video Tag, Audio Tag和Script Tag.
    A/V Tag里面存储的就是音视频编码数据,Script Tag里面是一些码流描述信息。
    理论上来说,不解析Script tag也可以对A/V Tag完整解码。tag的固定格式是:
     Tag Type(1字节) | DataSize(3字节) | TimeStamp(3字节) | TimeStampExtended (1字节)| StreamID (3) | ...
     下面将分别介绍各种NALU封到tag里面的结构。

2. 一般Video tag
                                         字节位置    意义
0x09,                              // 0,        TagType
0xzz, 0xzz, 0xzz,              // 1-3,     DataSize,    
0xzz, 0xzz, 0xzz, 0xzz,    // 4-6, 7 TimeStamp | TimeStampExtend    
0x00, 0x00, 0x00,            // 8-10,   StreamID
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值