FLV格式解析

1.FLV文件格式如下,由flv头和一系列tag组成,tag又分为script tag、音频tag、视频tag。 PreviousTagSize表示上一个tag的大小,占位4Byte。

FLV Header PreviousTagSize0 Tag1 PreviousTagSize1 Tag2 ...
  1. FLV Header由9个字节组成,说明如下
字段名称 字段大小 字段说明
Signature 1Byte Signature byte always 'F' (0x46)
Signature 1Byte Signature byte always 'L' (0x4C)
Signature 1Byte Signature byte always 'V' (0x56)
Version 1Byte flv版本号 (一般为0x01表示版本1)
TyepFlagsReserved 5bit 保留位
TypeFlagsAudio 1bit 音频标志位(1:存在音频,0:不存在音频)
TypeFlagsReserved 1bit 保留位
TypeFlagsVideo 1bit 视频标志位(1:存在视频,0:不存在视频)
DataOffset 4Byte FLV header 长度(版本1为9)
  1. tag是由Tag Header和Tag Data组成,不同类型的Tag其TagHeader部分总是相同,共11个字节。我们可以根据TagType知道后续的tag是音频还是视频,根据TimeStamp来进行视音频同步。

|---------------------------------------------------------------Tag ------------------------------------------------|

Tag Header Tag Data

|----------------------------------------------------------Tag Header---------------------------------------------|

TagType DataSize TimeStamp TimeStampExt StreamId
1Byte 3Byte 3Byte 1Byte 3Byte
1-2bit位:必须为0,保留位;第3bit位: 0表示未加密,1表示加密,一般默认0;4-8bit位:8:音频、9:视频、18:script数据; Tag Data的长度,不包括11字节的Tag Header 时间戳,毫秒为单位,则意味着要将时间戳单位关系换算好;第一个tag时,该值总是0 扩展时间戳(当时间戳不够时,当做高8位,很少用) 流id,总是0
  1. flv文件第一个tag一般是script tag,script tag Header如下图所示。scriptTag数据主要是文件的元数据信息Metdata,包括视频时长、分辨率、视频帧率、码率、音频采样大小等等信息。
    image.png
  1. flv的音频tag。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其...
    轻口味阅读 1,150评论 0 0
  • FLV是一个二进制文件,简单来说,其是由一个文件头(FLV header)和很多tag组成(FLV body)。 ...
    zjjcc阅读 3,149评论 1 3
  • FLV封装格式 FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积...
    _zzbb阅读 8,367评论 3 11
  • 概述 Flash Video(简称FLV),是一种网络视频格式,用作流媒体格式,它的出现有效地解决了视频文件导入F...
    Damon_He阅读 2,581评论 1 1
  • 之前的文章里已经介绍了音频码流AAC和视频码流H.264,接下来就是要把他们打包并封装格式了。 FLV用途 FLV...
    MrYun阅读 2,566评论 1 3