FLV封装格式详解:音频、视频与脚本Tag解析

5星 · 超过95%的资源 需积分: 11 14 下载量 68 浏览量 更新于2024-09-10 收藏 184KB PDF 举报
“FLV封装格式是网络流媒体常用的文件格式,用于封装音频、视频和脚本数据。FLV文件由FLVHeader开始,接着是多个FLVTag,每个Tag前有PreTagSize字段。文件中可能存在音频Tag、视频Tag和script Tag。” FLV(Flash Video)封装格式是一种广泛应用于在线流媒体服务的文件格式,它主要用于存储和传输音频、视频以及与视频相关的脚本数据。FLV文件结构清晰,易于解析,是Adobe Flash Player支持的默认格式。 FLVHeader是文件的起始部分,包含了文件标识符('F', 'L', 'V')和版本信息,默认版本号为0x01。接着的4个字节(Byte4-Byte7)表示FLVHeader的长度,由于Header固定为9字节,所以此处始终为0x00000009。Byte8是一个标志位,其中的a和b分别指示文件中是否存在音频和视频Tag。 FLVTag是文件的主要组成部分,每个Tag由FLVTagHeader和FLVTagData两部分组成。Tag的类型由Byte0确定,0x08表示音频数据,0x09表示视频数据,0x12则代表脚本数据。TagData的长度在Byte1-Byte3中指定,时间戳(解码时间)在Byte4-Byte6给出,单位为毫秒。时间戳扩展字节(Byte7)用于存储高8位时间戳。StreamID通常为0,用于标识数据流。 对于音频Tag,其FLVTagData部分包含AudioHeader和AudioData。AudioHeader中,前4位(Bit0-Bit3)定义了音频编码格式,如0表示线性PCM,1表示ADPCM,2表示MP3等。Bit4-Bit5定义了音频采样率,如0代表5.5KHz,1代表11KHz等。Bit6指示采样位宽,0表示8位,1表示16位。Bit7则区分单声道(0)和立体声(1)。AudioData部分存储实际的音频样本数据。 视频Tag的结构类似,但数据部分通常更复杂,包括视频编码信息和视频帧数据。视频编码可能包括Sorenson H.263、On2 VP6或H.264等不同格式。 FLV封装格式通过紧凑且有序的结构,使得音频、视频和脚本数据能够高效地在网络上传输,从而支持实时流媒体应用。了解这个格式对于开发与视频播放、流媒体处理相关的应用程序至关重要。