FLV文件格式基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hiwubihe/article/details/82346691

技术在于交流、沟通,转载请注明出处并保持作品的完整性。

原文:https://blog.csdn.net/hiwubihe/article/details/82346691

[本系列相关文章]

FLV,F4V,MP4广泛应用于各主流直播和点播平台,能够非常方便的流媒体和存储处理。本篇记录一下FLV文件的格式学习,FLV相对MP4格式比较简单。主要由文件头+三种类型的TAG组成。FLV支持的音视频编解码方式如下图

FLV总体结构如下图 

文件头

 
Field Data Type Default Details
Signature byte[3] “FLV” Always “FLV”
Version uint8 1 Only 0x01 is valid
Flags uint8 bitmask 0x05 Bitmask: 0x04 is audio, 0x01 is video (so 0x05 is audio+video)
Header Size uint32_be 9 Used to skip a newer expanded header

文件主体

交替有前面tag长度和tag体组成,

TAG头

AUDIODATA格式

 

 如果是MP3等其他数据,直接拷贝音频数据,AAC格式如下

VIDEODATA数据如下

H264/AVC编码时 AVCVIDEOPACKET

注意一下:

  1. flv文件中Timestamp和TimestampExtended拼出来的是dts,相对于第一个TAG来说的毫秒数。
  2. CompositionTime 表示当前帧PTS对DTS的偏移值,单位毫秒即CTS=PTS-DTS。CTS永远>0,因为一帧显示时间总是在解码时间之后。如
    帧类型 I B B P
    显示序号 1 2 3 4
    解码序号 1 3 4 2
    PTS 0 40ms 80ms 120ms
    DTS 0 20ms 50ms 10ms

    第一个B帧40ms需要显示,所以40ms以前必须解码好,而第一个B帧要解码需要依赖P帧,所以在40ms以前P帧和第一个B帧都要解码好。 

  3.  如果H264编码中没有B真,则PTS==DTS,所以CompositionTime CTS==0。

  4. AudioSpecificConfig参考ISO 14496-3,AVCDecoderConfigurationRecord参考ISO 14496-15。

  5. Data tags在本篇没解析,基本由AMF1和AMF2组成,包括视频分辨率,比特率,帧率,时长,大小,采样率,通道数常用信息。



 

猜你喜欢

转载自blog.csdn.net/hiwubihe/article/details/82346691