首页 > 解决方案 > mp4 文件中间的随机编解码器信息

问题描述

我正在尝试使用 C 从 mp4 文件中获取 NAL 单元。我进入“mdat”原子并尝试提取 NAL 单元。前 3 个是“大小,数据”,其中大小是数据的大小(以字节为单位)。在那之后,我继续寻找下一个单位。大小为 0xde02004c,太大了。当我用十六进制编辑器检查它时,我发现确实如此。但后来我注意到旁边写着“Lavc”。

00004930  92 43 19 61 93 4e de 02  00 4c 61 76 63 35 38 2e  |.C.a.N...Lavc58.|
00004940  35 34 2e 31 30 30 00 42  20 08 c1 18 38 00 00 00  |54.100.B ...8...|
00004950  c9 01 9e 41 79 09 7f 7a  03 ed 3f 54 39 fb c2 01  |...Ay..z..?T9...|
00004960  c4 53 76 51 2d bf 57 5f  04 25 00 b9 fb df 43 67  |.SvQ-.W_.%....Cg|
00004970  f3 27 b9 f5 d7 e7 95 e9  b4 06 14 6b 4a c7 4e ff  |.'.........kJ.N.|
00004980  23 ed 8f 17 d0 4d d4 21  a7 b3 84 0e 65 60 41 67  |#....M.!....e`Ag|
00004990  ec db 10 c9 b3 4c 3f 71  df 6b 73 c2 df cd fe 85  |.....L?q.ks.....|

前一个 NAL 单元正好在字节“de 02 00 4c”之前结束,所以这应该是下一个的大小。但事实并非如此。它看起来像编解码器信息。为什么?

编辑:第一个 nalu 的第一个字节:

00 00 02 af 06 05 ff ff ┊ ab dc 45 e9 bd e6 d9 48 │00•×••××┊××E××××H│
b7 96 2c d8 20 d9 23 ee ┊ ef 78 32 36 34 20 2d 20 │××,× ×#×┊×x264 - │

第二:

00 00 41 80 65 ┊ 88 84 01 ff 5e e7 6f ea
36 23 b7 5d 16 f8 5f 54 ┊ a3 5d 7c 9e ac d1 9b f6

第三个:

00 04 cb 41 9a 22 6c 5f
6e 75 69 b0 e3 e1 d9 c9 ┊ d4 71 cb 05 a3 60 09 71 ```

标签: cfilemp4h.264file-format

解决方案


推荐阅读