@stevechyuan
background knowledge:
一个mp4 file生成,是在enc 吐出bitstream之后。然后a/v interleave mux到mp4 file. h264 start code是在mux时候补的 不是enc吐出来就带的...
所以某些厂家的mux代码有问题。对multi-slice没有做好,这种情况只能播放器做demux时候自己有额外的dequeueAccessUnit(nal)做好也没问题。 有的demux没有这个multi-slice判断 可能会导致这个问题。 android默认是不会有这个问题的。
812 if (foundSlice) {
813 ABitReader br(nalStart + 1, nalSize);
814 unsigned first_mb_in_slice = parseUE(&br);
815
816 if (first_mb_in_slice == 0) {
817 // This slice starts a new frame.
818
819 flush = true;
820 }
821 }