FLV 封装格式解析

如题所述

FLV, Adobe的轻量级流媒体格式,凭借其紧凑封装和互联网友好特性,深受开发者青睐。这个小巧的文件后缀.flv由header和body两大部分构成,body由Tag和Previous Tag Size(4字节)串联起视频、音频和脚本信息的脉络。


每个Tag由11字节的header引领,tag data则根据内容分为视频、音频和脚本。其中,Script Tag Data独具特色,包含两个AMF包,一个封装字符串"onMetaData",另一个封装元数据数组,如duration和audiodatarate等关键参数。


深入解析:



    视频Tag Data: 首先,4位帧类型与4位编码类型共同标识。例如,首个视频Tag的Tag Data以AVC PACKET开始,随后是AVCDecoderConfigurationRecord(sps和pps)信息,通常在FLV的首个video tag出现,sps和pps以特定格式存储。
    音频Tag Data: 以4bit音频格式、2bit采样率、1bit精度和1bit声道组成首字节,展示音频特性。AAC Tag Data的header标识了数据类型,如1表示raw数据。

实例演示:


FLV的开头,即9字节header,涵盖了音频和视频信息。视频Tag的第一个tag头(0x09000022)标记了AVC数据的存在,紧接着是sps和pps的具体数据。音频方面,首个tag长度为4字节,表示AAC格式,采样率为44kHz,16位,单声道;第二个tag则携带AAC的raw数据,长度为752字节。


若想深入学习FLV解析,更多技术细节和C/C++、Linux、FFmpeg等实用资源,可以参考以下链接获取资料包:[链接](https://www.jianshu.com/p/651deb57a6b4)。这里还有群组福利,免费分享更多相关知识和资源。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜