最近,因產品需要,開始研究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