"ffprobe -v trace demo.mp4" 输出的含义

Meaning of "ffprobe -v trace demo.mp4" output

Mp4文件的'mdat box'可能在文件的最后。我想使用 'ffmpeg' 或 'ffprobe'.

知道 'mdat' 框的位置

Mp4 由'ftyp'、'moov' 和'mdat' BOX 组成。每个 BOX 由 "BoxHeader" 和 "BoxData" 组成。 "BoxHeader"由"BoxSize(4Byte)"、"BoxType(4Byte)"、"BoxLargesize(8Byte, only have when box size exceeding the range of 4Byte expression, then the value of BoxSize is 1)"组成。

在程序中,可以先读取8Byte,知道'ftyp box'的大小,然后求大小,读取8Byte,就可以知道下一个框是不是'moov box'。如果不是'moov',应该是'mdat box',然后求叉'mdat box'找到'mdat box'...

但是我想用'ffprobe'找到'moov'的位置。我使用 'ffprobe -v trace demo.mp4',输出如下

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc8fd000e00] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc8fd000e00] type:'ftyp' parent:'root' sz: 28 8 41044500
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc8fd000e00] ISO: File Type Major Brand: mp42
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc8fd000e00] type:'moov' parent:'root' sz: 17943 36 41044500
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc8fd000e00] type:'mvhd' parent:'moov' sz: 108 8 17935

我想知道type:'ftyp' parent:'root' sz: 28 8 41044500的意思: type:'ftyp' parent:'root'很容易就知道了,sz: 28 8 41044500真是搞糊涂了,我猜28是ftyp框的大小,但是8 41044500是什么意思?

能否解释一下sz: 28 8 41044500的意思,文档在哪?

考虑

type:'mvhd' parent:'moov' sz: 108 8 17935

type和parent分别代表当前和parent框的类型。

sz(尺码)有三个值。

第一个值,108表示当前框的总大小,包括header。

第二个值8表示框数据相对于框header开始的起始偏移量。这是必需的,因为盒子大小可以是 8 个字节,盒子类型可以有一个 UUID,在这种情况下,它可能长达 20 个字节。即使该框没有数据,此偏移量也将为 non-zero free.

第三个值17935是parent框的数据大小。