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
的含义,以及在哪里可以找到该文档?
答案 0 :(得分:1)
考虑
type:'mvhd' parent:'moov' sz: 108 8 17935
type和parent分别代表当前框和父框的类型。
sz
(大小)有三个值。
第一个值108
代表当前框的总大小,包括标题。
第二个值8
代表Box数据相对于Box Header起始位置的起始偏移量。这是必需的,因为框的大小可以为8个字节,并且框的类型可以具有UUID,在这种情况下,最长可以为20个字节。即使该框没有数据,例如,该偏移量也将为非零。 free
。
第三个值17935
是父级框的数据大小。