FLV文件格式官方规范详解
——如果要学习一个新的知识点,官方手册可能是最快的途径。查看网上其他人的总结也许入门更快,但是要准确,深入,完整,还是要看官方手册。 以下内容来自对官方文档Video File Format Specification Version 10的分析总结。过程中借助ffmpeg实际转换了一个flv文件用例研究。 一个FLV文件,每种类型的tag都属于一个流,也就是一个flv文件最多只有一个音频流,一个视频流,不存在多个独立的音视频流在一个文件的情况。(mp4好像是可以的) 另外,FLV文件格式所用的是大端序。 注:下面的数据type中,UI表示无符号整形,后面跟的数字表示其长度是多少位。比如UI8,表示无法整形,长度一个字节。UI24是三个字节。UB表示位域,UB5表示一个字节的5位。可以参考c中的位域结构体。 FLV头 Field type Comment 签名 UI8 ’F’(0X46) 签名 UI8 ‘L’(0X4C) 签名 UI8 ‘V’(0x56) 版本 UI8 FLV的版本。0x01表示FLV 版本是1 保留字段 UB5 前五位必须是0 是否有音频流 UB1 音频流是否存在标志 保留字段 UB1 必须是0 是否有视频流 UB1 视频流是否存在标志 文件头大小 UI32 FLV版本1时填写9,表明的是FLV头的大小,为后期的FLV版本扩展使用。包括这四个字节。