flv文件格式及h264 aac流封装成flv

本文介绍了FLV流媒体封装格式的详细结构,包括文件头和文件体,以及Tag的分类和结构。同时,讨论了音频和视频Tag的数据区信息,如音频格式和视频类型。此外,提到了脚本Tag(元数据)在FLV中的作用。最后,简要提及了将H264 AAC流封装为FLV文件的流程。
摘要由CSDN通过智能技术生成

FLV文件格式

FLV是流媒体封装格式,我们可以将其数据看为二进制字节流。
FLV包括文件头(Flv Header)和文件体(Flv Body)两部分,其中文件体由一系列的Tag及Tag Size对组成。Tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)。

FLV Header
第1-3字节:为文件标识(Signature),总为“FLV”(0x46 0x4C 0x56);
第4字节:为版本,目前为1(0x01);
第5个字节:前5位保留必须为0,第6位表示是否存在音频Tag,第7位保留必须为0,第8位表示是否存在视频 Tag。
第6-9个字节:表示从File Header开始到File Body开始的字节数
这里写图片描述

这里写图片描述

Flv Body
FLV File Body的总体布局
这里写图片描述
这里写图片描述

FLV File Body的解析:
FLV body由若干个tag 组成;
每个tag header前面有4bytes记录着上一个tag的长度;
每一个tag第一部分是tag header,tag header长度为11bytes;

tag header的结构
这里写图片描述

第1个字节:记录着tag的类型,音频(0x8),视频(0x9),脚本(0x12);
第2到4字节: 是数据区的长度,也就是tag data的长度;
第5到7字节: 是时间戳,单位是毫秒;
第8个字节: 是扩展时间戳,时间戳不够长的时候用;
第9到11字节:streamID,但是总为0;

这11个字节就是tag header的结构。

tag data
这里写图片描述

tag data如果是音频数据,第一个byte记录audio信息:
前4bits表示音频格式(全部格式请看官方文档):
·0 – 未压缩
·1 – ADPCM
·2 – MP3
·4 – Nellymoser 16-kHz mono
·5 – Nellymoser 8-kHz mono
·10 – AAC
下面两个bits表示samplerate:
·0 – 5.5KHz
·1 – 11kHz
·2 – 22kHz
·3 – 44kHz
下面1bit表示采样长度:
·0 – snd8Bit
·1 – snd16Bit
下面1bit表示类型:
·0 – sndMomo
·1 – sndStereo
之后是数据。

如果是视频数据,第一个byte记录video信息:
前4bits表示类型:
·1– keyframe
·2 – inner frame
·3 – disposable inner frame (h.263 only)
·4 – generated keyframe
后4bits表示解码器ID:
·2 – seronson h.263
·3 – screen video
·4 – On2 VP6
·5 – On2 VP6 with alpha channel
·6 – Screen video version 2
·7 – AVC (h.264)
之后是数据。

如果tag data是脚本数据,Script Tag Data,该类型Tag又通常被称为Metadata(元数据) Tag,会放一些关于FLV视频和音频的参数信息,如duration、width、height等。通常该类型

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值