美文网首页
FLV封装格式

FLV封装格式

作者: kansnow | 来源:发表于2020-10-19 21:09 被阅读0次

FLV封装格式是由⼀个⽂件头(FLV header)和 ⽂件体(FLV body)组成。其中FLV body由若干对的previous tag size + tag组成,previous tag size占用4个字节 记录了前一个tag的大小,用于逆向读取处理。flv header后的第一个previous tag size的大小为0。

Tag⼀般可以分为3种类型:脚本(帧)数据类型、⾳频数据类型、视频数据。FLV数据以⼤端序进行存储。

FLV header 位数说明:

位域 位宽 说明
Signature 3 * 8 文件标识,分别为“F”, “L”, "V"(0x46,0x4C,0x56)
Version 1 * 8 版本标识,目前为0x01
TypeFlags 1 * 8 前5位和第7位为保留位必须为0,第6位表示是否存在音频,第8位表示是否存在视频
DataOffset 4 * 8 从FLV header起始位置到File body起始位置的字节数,版本1为9个字节

tag body说明:

位域 位宽 说明
PreviousTagSize 4 * 8 前一个tag的长度
TagType 1 * 8 t该ag的类型,音频(0x08)、视频(0x09)和script data(0x12),其他类型值为保留位
DataSize 3 * 8 该tag的data部分大小
Timestamp 3 * 8 该tag的时间戳
TimestampExtended 1 * 8 时间戳的扩展字节,24位不够时将扩展为32位
Tag Data DataSize * 8 不同类型的tag的data部分结构互不相同,但header部分的结构是一样的

flv⽂件中Timestamp和TimestampExtended拼出来的是dts。也就是解码时间。Timestamp和TimestampExtended拼出来dts单位为ms。(如果不存在B帧,当然dts等于pts)

CompositionTime 表示PTS相对于DTS的偏移值, 在每个视频tag的第14~16字节,显示时间(pts) = 解码时间(tag的第5~8字节) + CompositionTime CompositionTime的单位也是ms

Script data脚本数据是描述视频或⾳频的信息的数据,如宽度、⾼度、时间、采样、声道、频率、编码等,⼀个⽂件中通常只有⼀个元数据

FLV解析架构图
Script Tag Data结构
FIeld Type Comment
Type U8 第1个字节表示第一个AMF包类型,⼀般总是0x02,表示字符串
Value_size U16 标识字符串的⻓度,⼀般总是0x000A(“onMetaData”⻓度)
Value U8 * 10 为具体的字符串,⼀般为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)
Type U8 第二个表示AMF包类型,⼀般总是0x08,表示数组
ECMAArrayLength U32 表示数组元素的个数,后⾯即为各数组元素的封装,数组元素为元素名称和值组成的对。
数据对元素个别例子
Audio Tag Data结构
FIeld Type Comment
SoundFormat UB4 音频格式,10 为AAC,0为PCM,2为MP3
SoundRate UB2 采样率,0 = 5.5KHz,1 = 11kHz, 2 = 22.05kHz, 3 = 44.1kHz,对于AAC总是3。但实际上AAC是可以⽀持到48khz以上的频率(这个参数对于AAC意义不⼤)。
SoundSize UB1 1代表16位,0代表8位,此参数仅适⽤于未压缩的格式,压缩后的格式都是将其设为1
SoundType UB1 0 = sndMono, 1 = sndStereo ⽴体声,对于AAC总是1
音频数据 U8 * n 音频数据

例如:


Audio Tag Data结构 例子
Video Tag Data结构
FIeld Type Comment
帧类型 UB4 1: keyframe (for AVC, a seekable frame)——h264的IDR,关键帧,2: inter frame (for AVC, a non- seekable frame)——h264的普通帧
编码ID UB4 7: AVC
视频数据 U8 * n 视频数据

例如:


Video Tag Data结构 例子

相关文章

  • FLV封装格式

    FLV封装格式是由⼀个⽂件头(FLV header)和 ⽂件体(FLV body)组成。其中FLV body由若干...

  • 音视频容器

    容器 ts\mp4\flv refrence FLV 封装格式解析[https://www.cnblogs.com...

  • FLV封装格式解析

    一、简介 FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,...

  • FLV 封装格式解析

    FLV 简介 FLV(Flash Video) 是 Adobe 公司推出的一种流媒体格式,由于其封装后的音视频文件...

  • 四:视频封装格式

    封装格式:目前主要有以下封装格式:AVI,MP4,TS,FLV,MKV,RMVB等.这些格式各有优缺点,一下是各种...

  • ffmpeg处理流程

    [1] 输入文件:(mp4,flv封装格式文件)demuxer:打开封装格式文件 [2] 编码数据包 (音视频,字...

  • iOS-多媒体-视频的一些基础信息

    1、视频的大小2、视频时长3、视频的格式 :MP4、MOV、AVI、RMVB、FLV这些播放格式其实都是封装格式,...

  • FLV格式详解

    FLV简介 FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点...

  • 视频播放流程

    1.拿到封装格式数据(MP4、MKV、FLV...)2.解封装格式数据3.得到压缩数据(音频压缩数据和视频压缩数据...

  • mkv、rmvb、avi、MP4、flv、wmv、HLS特点和区

    mkv,rmvb,avi,mp4, flv ,wmv都是封装格式,也是文件格式,并不是数据压缩格式。 先介绍一下这...

网友评论

      本文标题:FLV封装格式

      本文链接:https://www.haomeiwen.com/subject/rqyhmktx.html