最近,因产品需要,开始研究FLV与SWF的文件格式,顺便编写了FLV与SWF文件的解析工具。
1. FLV File Format
FLV文件格式比较简单,就是一个FLV Header加上一个FLV Tag序列构成的FLV Body。
FLV Tag可以是Video,Audio和Script.
但是,当前的FLV文件里不能容纳2个及两个以上的同类型的Stream;应该说这种设计还是比较落后的。很多其它文件格式,如Asf,RM,WMV等都可以容纳多个同类型的流。
2. SWF File Format
SWF的文件格式比较复杂,尤其对于解析来说,里面使用了好多Bit Value,动态指定后面采用多少Bit表示一个特定值,再加上字节对齐,相对比较麻烦。另外,版本6及其以后的版本在首字节用"C"来表示数据采用了ZLib压缩,可恶的是竟然把SWF Header也进行了压缩,导致在解析文件头的时候不得不对后面所有的数据进行解压,这种设计在我个人看来有失水准。
3. Byte Order
SWF和FLV使用不同的Byte Order:
SWF : Little-Endian
FLV : Big-Endian