MP4文件NALU读取
各位大牛好!我现在在做关于MP4文件解析的一个程序,通过现有的解析器可以按照sample chunk的偏移和sample在chunk中的偏移计算得到sample的偏移,然后从mdat中读取得到这个sample块的数据,刚开始以为这个sample块就是NALU,只不过开头没有NALU的start code,而是一个length为4的大小,网上也有很多人说这个就是NALU,但是我用ffmpeg得到的raw NALU与这个差很多,因此,我想问一下MP4中的sample与NALU之间的关系,以及怎样才能从MP4文件中得到NAL单元,先谢过~~ MP4 NAL
[解决办法]
因为你没有把SPS,PPS信息给解码器,它们在avc1 box里吧。
[解决办法]
0x_7就是sps,你可以看看h264得文档,从你的话语看出你还不是很了解h264视频格式,0x_8是pps。你一开始说得没错,mdat box中的就是nalu,只不过没有startcode,你要还原0x 00 00 00 01回去才能解码,还原的方法,应该是先看stco,找到chunk的起始位置,然后按照stsz,找到一贞的大小,传送出来,还原start code,判断是不是I贞,如果是还原sps pps,然后看stsc,确定这个chunk到底有多少贞,如此往复。其次,你之所以不能解码,是因为没有将stsd-->avcC-->avc1中的sps pps部分还原给GOP的最开头。
你所要做的在行业内称之为容器码流的解复用,也就是demux,可以参考ffmpeg
[解决办法]