"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框的数据大小。
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框的数据大小。