FLV(Flash Video)

FLV(Flash Video)是一种用于通过互联网传输视频和音频的文件格式。以下是对FLV文件格式的详细讲解:

1. FLV Header
FLV文件头部包含文件的基本信息,是文件的开头部分,通常占据9个字节。其结构如下:

Signature (3 bytes): 表示文件类型,固定为 “FLV”。
Version (1 byte): 表示FLV文件版本,常见的是版本1。
Type Flags (1 byte): 表示文件中是否包含音频和视频数据。第5位表示音频,第6位表示视频。
Data Offset (4 bytes): 表示FLV头部的长度,通常为9,表示头部之后的数据开始位置。
2. FLV Body
FLV Body包含实际的视频、音频和元数据,由多个FLV Tag组成。

FLV Tag
FLV Tag是FLV文件中数据的基本单元,每个Tag包含一个tag header和tag body。

Tag Header
Tag Header描述了Tag的基本信息:

Type (1 byte): 表示Tag的类型,0x08为音频,0x09为视频,0x12为脚本数据。
Data Size (3 bytes): 表示Tag Body的大小。
Timestamp (3 bytes) and Extended Timestamp (1 byte): 表示Tag的时间戳,用于同步音视频。
StreamID (3 bytes): 保留位,通常为0。
Tag Body
根据Tag类型的不同,Tag Body的结构也不同,主要有以下几种类型:

Script Tag Data结构(脚本类型)
Script Tag用于存储元数据,比如视频时长、宽高等。通常以AMF(Action Message Format)编码。

Audio Tag Data结构(音频类型)
音频Tag包含音频数据,其数据结构如下:

Sound Format (4 bits): 表示音频格式,比如AAC、MP3等。
Sound Rate (2 bits): 表示音频采样率。
Sound Size (1 bit): 表示音频样本大小,0为8位,1为16位。
Sound Type (1 bit): 表示音频声道类型,0为单声道,1为立体声。
AAC Packet Type (1 byte, if AAC): 表示AAC音频包类型,0为AAC sequence header,1为AAC raw。
AAC Audio Data
AAC音频数据包含实际的音频内容,编码方式为AAC。

Video Tag Data结构(视频类型)
视频Tag包含视频数据,其数据结构如下:

Frame Type (4 bits): 表示帧类型,1为关键帧,2为间隔帧,3为显示帧。
CodecID (4 bits): 表示视频编码方式,比如AVC(H.264)。
AVC Packet Type (1 byte, if AVC): 表示AVC视频包类型,0为AVC sequence header,1为AVC NALU,2为AVC end of sequence。
Composition Time (3 bytes, if AVC): 表示帧的显示时间,与解码时间的差值。
AVCVIDEOPACKET
包含实际的视频数据,以NALU的形式存储。

3. 附录
附录部分包含一些额外的信息,比如文件格式的品牌和版本信息。

Major Brand && Minor Version
Major Brand (4 bytes): 表示文件格式的主要品牌。
Minor Version (4 bytes): 表示文件格式的次要版本。
FLV时间戳计算
FLV时间戳用于音视频的同步播放,通常在Tag Header中表示。时间戳的计算公式为:

其中:

Timestamp Low: 为3字节,包含时间戳的低24位。
Extended Timestamp: 为1字节,包含时间戳的高8位。
结论
FLV文件格式通过其头部、主体和Tag结构,实现了音视频数据的高效封装和传输。理解FLV文件格式的各个组成部分和数据结构,有助于在音视频处理和流媒体传输中更好地应用FLV格式,提升音视频的传输效率和播放质量。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值