我使用C语言将H264帧(只有I / P帧)编码为fmp4文件。当我填充mdat框时,我不知道如何填充帧数据。
是否直接填充(I / P)帧数据?
前4个字节需要填充帧长吗?
我尝试使用FFMPG对fmp4文件进行编码,发现mdat框中的数据与原始I / P帧数据完全不同。
是否再次编码?
我可以直接将I / P帧的数据填充到mdat框中吗?
H.264可以采用不同的流格式。一个叫做“附件B”,另一个叫做MP4。在“附件B”中,您的NAL单位以开始码00 00 00 01或00 00 01为前缀。在MP4中,您的NAL单位以字节大小为前缀。
我假设您的编码器发出“附件B”。
删除起始码(00)00 00 01
给NAL单位加上大小(通常为4个字节)
从您的流中过滤掉AUD / SPS / PPS NAL单位
将转换后的NAL单位写入MDAT框
根据您的SPS,PPS和长度大小创建一个AVC配置框('avcC')
将您的avcC盒子存储在moov-> trak-> mdia-> minf-> stbl-> avc1-> avcC中
将样本写入mdat时-跟踪尺寸,偏移量和帧类型以创建正确的stst,stss,stsc,stsz和stco框。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句