RTMP视频流格式解析

本文深入解析RTMP视频流中的FLV格式,包括FLV Header、Body和Tag的详细结构,以及RTMP抓包视频流中AVC NALU的处理。介绍了NALU的数据结构,如H264的SPS和PPS,并提供了H264裸流转换为RTMP协议发送的代码示例。
摘要由CSDN通过智能技术生成

FLV 格式解析

简述:
FLV是由一个FLV Header 和 若干tag(Video Tag, Audio Tag, Script Tag三种,分别代表视频流,音频流和脚本流)组成的二进制文件。

FLV Header示意图
这里写图片描述

FLV Header:

    文件类型: 固定为 "FLV" (3 bytes)
    版本信息: 一般为0x01   (1 byte)
    流信息:  0000 0101 此flv文件包含视音频, 0000 0001 此flv文件包含视频 0000 0100 包含音频  (1 byte)
    头长度:  FLV文件头长度,一般为 3+1+1+4=9 bytes  (4bytes)

FLV Body:

Body由一系列pre tag length 和 tag组成。
        +-----------------------------------------------------------------------+
        | Pre Tag Length | Tag Header | Tag Data | .... | Pre Tag Length |  ... |
        +-----------------------------------------------------------------------+
        Pre Tag Length: 前一个tag的长度 4 bytes
        Tag Header:     1 + 3 + 3 +1 + 3 = 11 bytes

Tag:

    tag header (11 bytes)
    +----------------------------------------------------------------------------------------+
    | Tag Type(1 byte) | Tag Data Length(3 bytes) | Timestap(3 bytes) | TimestapExt(1 byte)  | 
    +----------------------------------------------------------------------------------------+
    |  StreamID(3 bytes) |
    +--------------------+  
        Tag Type:           Tag 类型        1 byte
                0x08    音频
                0x09    视频
                0x12    脚本
        Tag Data Length:    Tag Data 长度   3 bytes
        Timestamp:          时间戳(单位ms)   3 bytes
        TimestampExt:       扩展时间戳       1 byte
        StreamID:           流ID 总是0      3 bytes
    tag data
        tag data如果是音频数据,第一个byte记录audio信息:
        前4bits表示音频格式(全部格式请看官方文档):
hex comment
0 未压缩
1 ADPCM
2 MP3
4 Nellymoser 16-kHz mono
5 Nellymoser 8-kHz mono
10 AAC

下面两个bits表示samplerate:

hex comment
0 5.5KHz
1 11kHz
2 22kHz
3 44kHz

下面1bit表示采样长度:

hex comment
0 snd8Bit
1 snd16Bit

下面1bit表示类型:

hex comment
0 sndMomo
1 sndStereo

之后是数据。

        如果是视频数据,第一个byte记录video信息:
hex comment
1 keyframe
2 inner frame
3 disposable inner frame (h.263 only)
4 generated keyframe

后4bits表示解码器ID:

hex comment
2 seronson h.263
3 screen video
4
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值