如果视频数据复用为mp4文件,视频原始数据-> mdat
典型的 MP4 布局:
[MDAT size in 4 bytes] --> [MDAT header in 4 bytes "m","d","a","t"] then follows NALUs.
[NAL #1 size (4 bytes)] --> [NAL #1 data] --> [NAL #2 size (4 bytes)] --> [NAL #2 data].
但是当我使用 isobmff 库尝试这个时,它需要 Endian 处理方法。
我的 CPU 是 Intel(R) Xeon(R) Gold 6238R CPU @ 2.20GHz。
不仅 ASCII 代码
'm' 'd' 'a' 't'
更改为 't' 'a' 'd' 'm'
,大小字节也更改为 BigEndian。mp4盒子的ASCII码和大小是大端格式吗?
MP4 文件规范来自 MOV(Apple 的格式)。
Apple 的早期硬件是大端字节序,但您的英特尔至强是小端字节序。
因此 MP4 中的大小字段是大端字节序,因此在写入文件之前必须从小端字节序转换为大端字节序。
fourCC 'mdat'(4 个字节“m”、“d”、“a”、“t”)需要按照拼写顺序写入。
有时,库将 fourCC 存储在 uint32_t 中,例如“mdat”,然后 fourCC 可能会颠倒。