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

时间:2019-05-17 05:38:43

标签: ffmpeg mp4 ffprobe

Mp4文件的“ mdat框”可能位于文件的最后。我想使用'ffmpeg'或'ffprobe'知道'mdat'框的位置。

MP4由“ ftyp”,“ moov”和“ mdat” BOX组成。每个BOX由“ BoxHeader”和“ BoxData”组成。 “ BoxHeader”由“ BoxSize(4Byte)”,“ BoxType(4Byte)”,“ BoxLargesize(8Byte,仅当框大小超过4Byte表达式的范围时才具有,然后BoxSize的值为1)”组成。

在程序中,您可以先读取8个字节并知道“ ftyp框”的大小,然后查找该大小并读取8个字节以了解下一个框是否为“ 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的含义,以及在哪里可以找到该文档?

1 个答案:

答案 0 :(得分:1)

考虑

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

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

sz(大小)有三个值。

第一个值108代表当前框的总大小,包括标题。

第二个值8代表Box数据相对于Box Header起始位置的起始偏移量。这是必需的,因为框的大小可以为8个字节,并且框的类型可以具有UUID,在这种情况下,最长可以为20个字节。即使该框没有数据,例如,该偏移量也将为非零。 free

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