mp4文件的'mdat框'可能在文件的最后一个。我想使用" ffmpeg"或" ffprobe"来知道" mdat"框的位置。
mp4由" FTYP"," MOOV"one_answers" MDAT"框组成。每个盒子由" Boxheader"one_answers" Boxdata"组成。" Boxheader"由" BoxSize(4 Byte("," BoxType(4 Byte("," BoxLargeize(8 Byte,仅在盒子大小都超过4Byte表达式范围时(,那么BoxSize的值为1("。
在程序中,您可以首先读取8个字节并知道" FTYP框"的大小,然后寻找大小并读取8个字节以了解下一个框是否为" Moov Box"。如果不是" Moov",它将是" MDAT框",然后寻求Cross" MDAT框"找到" 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
的含义,在哪里可以找到DOC?
考虑
type:'mvhd' parent:'moov' sz: 108 8 17935
类型和父,分别表示当前和父框的类型。
sz
(size(有三个值。
第一个值108
表示当前框的总尺寸,包括标题。
第二个值8
代表框数据相对于框标题的开始的启动偏移。这是需要的,因为盒子尺寸可以是8个字节,而框类型可以具有uuid,在这种情况下,可能长达20个字节。即使盒子没有数据,该偏移量也不为零。free
。
第三个值17935
是父框的数据大小。