第一步深入理解H264

H264的内容非常多,网上也有很多资料,这里我写下我在做直播过程中对H264数据格式的一些理解正式进入正题。

一、H264格式:

H264都是由一个一个NAL单元组成,每一个单元的起始码都是0x00 0x00 0x00 0x01或者0x00 0x00 0x01来组成,紧接着后面一个字节就代表着这一帧数据的类型H264的Nal类型总共有这么几种:

// MARK: - NALType
enum NALType: UInt8 {
    case UNSPEC   = 0
    case SLICE    = 1 // P frame
    case DPA      = 2
    case DPB      = 3
    case DPC      = 4
    case IDR      = 5 // I frame
    case SEI      = 6
    case SPS      = 7
    case PPS      = 8
    case AUD      = 9
    case EOSEQ    = 10
    case EOSTREAM = 11
    case FILL     = 12
}
具体计算通过&0x1f可以得出,其是推流过程我们只需要了解 p帧 I帧 SPS PPS SEI这几种数据类型就可以了。 下面是我录制的一个h264文件通过它可以更清晰的理解H264的内部结构。

二进制:


下面可以分析第一帧 00 00 00 01 27,0x27&0x1f也就是 00100111&00011111 = 00000111 = 7也就是代表第一帧是sps帧

第二帧 00 00 00 01 28 &0x1f的结果就是8代表的是pps帧,第三帧00 00 00 01 06就是SEI帧 第四帧00 00 00 01 25就是IDR帧 第五帧 00 00 00 01 21 就是P帧 第6,7帧都是P帧,...依次去这样判断,紧接着还是这样的结构:


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值