1.按照TS流标准:一个TS流文件连续5个包步进188Byte,第一个字节都是0x47同步字节开头的,那么包长188B;同理为204B。
那么,如果文件大小 < 5*188B(约1kB)是否就不好判断了呢?
我觉得,还是有个简单方法的:直接文件的大小除以188,余数为0,则为188包;除以204,余数为0,则为204包。哪怕是几百兆的文件都应该遵循此规律,不会出现一个文件即是188也是204的倍数的。
呵呵,因为用到数学知识的了,188的一个因子为47,而204的一个因子为51,故都为质数,故不可能出现都被一个文件大小整除。
2.不少码流分析软件因要判断5个连续的包,小于1k的文件就不能分析的了。
所以,我觉得这样不好,以下面的方式判断比较妥当:
(1).当文件< 5*188B,直接除以188或204,能整除则为188包或204包;
(2).当文件>= 5*188B,按照TS标准判断5个同步的包的长度,188或204;
当不能判定的时候,比如188或204都不能被整除,则说明TS文件有错误,可同步后再去读取内容;连续去找到5个同步字节0x47后,再读取5个连续的包判断包长是188还是204。