书接上回,我们讨论了FLV文件的结构,有了这些基础之后,我们就能够对FLV文件进行一些操作了,比如本文要讨论的——校验FLV文件的完整性。
完整的FLV文件应该按照FLV文件的结构提供完整的数据信息,如:FLV Header,FLV Body中的Previous Tag Size,Tag。那我们下面由简入繁的步骤来对FLV文件校验一番。
最简单的校验方法,仅校验FLV Header信息,如(.NET代码):
public static bool IsValidFlvHeader(byte[] bytes)
{
if (bytes.Length != 9) return false;
byte[] header0 = new byte[] { 0x46, 0x4C, 0x56 };
byte flvVer = bytes[3];
byte flvType = bytes[4];
byte[] header_offset = new byte[] { 0x00, 0x00, 0x00, 0x09 };
if (!header0.SequenceEqual(bytes.Take(3).ToArray())) return false;
if (flvVer != 0x01) return false;
if (flvType != 0x01
&& flvType != 0x04
...