关于fmp4编码,如何填充mdat框和H264帧?

袁大宇

我使用C语言将H264帧(只有I / P帧)编码为fmp4文件。当我填充mdat框时,我不知道如何填充帧数据。
是否直接填充(I / P)帧数据?
前4个字节需要填充帧长吗?

我尝试使用FFMPG对fmp4文件进行编码,发现mdat框中的数据与原始I / P帧数据完全不同。
是否再次编码?
我可以直接将I / P帧的数据填充到mdat框中吗?

马库斯·舒曼(Markus Schumann)

H.264可以采用不同的流格式。一个叫做“附件B”,另一个叫做MP4。在“附件B”中,您的NAL单位以开始码00 00 00 01或00 00 01为前缀。在MP4中,您的NAL单位以字节大小为前缀。

我假设您的编码器发出“附件B”。

  1. 删除起始码(00)00 00 01

  2. 给NAL单位加上大小(通常为4个字节)

  3. 从您的流中过滤掉AUD / SPS / PPS NAL单位

  4. 将转换后的NAL单位写入MDAT框

  5. 根据您的SPS,PPS和长度大小创建一个AVC配置框('avcC')

  6. 将您的avcC盒子存储在moov-> trak-> mdia-> minf-> stbl-> avc1-> avcC中

  7. 将样本写入mdat时-跟踪尺寸,偏移量和帧类型以创建正确的stst,stss,stsc,stsz和stco框。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章