首先用工具分析一个flv文件,flv是一种封装格式,是adobe公司推出的。官方文档可以参考:video_file_format_spec_v10_1,本文根据官方文档总结。
FLV 文件格式
FLV格式主要包括: FLV Header和FLV Body两部分.
- Header
- Header包括文件类型,流信息(是否包含视频音频),header长度等信息.
- Body
- Body由一个个Tag组成.
- Tag包含的信息主要为: 视频、音频或脚本信息.
- Body中一般第一个Tag为脚本信息(meta data, 包含视频音频的编码格式,视频的宽高信息等,该类型的Tag一般有且仅有一个),其后的Tag为Video或Audio的Tag.
The FLV tag contains metadata for audio, video, or scripts, optional encryption metadata, and the payload
视频数据:
AVCVIDEOPACKET
cts偏移:cts = (pts - dts) / 90 。cts的单位是毫秒。
音频数据:
onMetaData
onMetaData是FLV文件中的第一个Tag, 用来表示当前文件的一些基本信息: 比如视音频的编码类型id、视频的宽和高、文件大小、视频长度、创建日期等。
其中有两个编解码器id,一个是audiocodecid, 还有一个是videocodecid,
-
audiocodecid
- 音频的编码类型的id,如AAC的audiocodecid=10
-
videocodecid
- 视频的编码类型的id,如AVC的videocodecid=7