解复用器如何区分作为同步字节的0x47和作为数据的0x47?

5 video parsing mpeg transport-stream h.264

对于解复用器,输入是字节流.一切都只是零和一个.现在,解析器如何区分数据中的0x47和传输流头的同步字节0x47?

例如,如果demux接收的数据是0x47 0x56 0xef 0x47 ...它将如何知道哪个0x47是同步字节?

它是否在同步字节后寻找任何附加位以确保它读取的0x47确实是标头的开头?机制是什么?

对于任何解析器来说都是如此.H.264解析器检查NAL起始码.它如何区分数据中的实际起始代码和起始代码.因为对于解析器,一切都只是字节.

谢谢.

sza*_*ary 6

同步字节相隔188个字节发送.如果0x47遇到,188字节后,没有另一个0x47.它不是同步字节.接下来,它等待PAT或PMT,因为这些数据包具有校验和.因此,如果校验和匹配,并且0x47每188个字节就会同步该流.偶然发生的可能性是天文数字.如果确实如此,那么在尝试解码流时最终会出现其他问题,并且该过程将重新开始.

在h.264的情况下.流中的起始代码000001不合法.如果编码器确实产生了这个字节序列,那么它将被转义为00000301并且解码器知道在a 03之后忽略a0000