如何计算mp4视频的开始时间?



我正在学习mp4视频结构。我有一个问题,读取以下mp4视频的开始时间值

我读过这个答案mp4视频在Quicktime/AVplayer与Chrome/Firefox上的不同时间开始

并且它说Edit atom可以修改开始时间

使用ffprobe,我有以下输出:

"start_time": "0.033333",
"duration_ts": 327,
"duration": "10.900000",
"bit_rate": "9420949",

使用mp4dumper,我有以下原子结构,证明缺少编辑原子文件:

ftyp (24 @ 0)
free (8 @ 24)
moov (7034 @ 32)
mvhd (108 @ 40)
trak (2883 @ 148)
tkhd (92 @ 156)
mdia (2783 @ 248)
mdhd (32 @ 256)
hdlr (52 @ 288)
minf (2691 @ 340)
smhd (16 @ 348)
dinf (36 @ 364)
dref (28 @ 372)
url  (12 @ 388)
stbl (2631 @ 400)
stsd (91 @ 408)
mp4a (75 @ 424)
stts (24 @ 499)
stsc (304 @ 523)
stsz (2056 @ 827)
stco (148 @ 2883)
trak (4035 @ 3031)
tkhd (92 @ 3039)
mdia (3935 @ 3131)
mdhd (32 @ 3139)
hdlr (52 @ 3171)
minf (3843 @ 3223)
vmhd (20 @ 3231)
dinf (36 @ 3251)
dref (28 @ 3259)
url  (12 @ 3275)
stbl (3779 @ 3287)
stsd (163 @ 3295)
avc1 (147 @ 3311)
stts (24 @ 3458)
ctts (1960 @ 3482)
stsc (40 @ 5442)
stsz (1328 @ 5482)
stco (148 @ 6810)
stss (108 @ 6958)
mdat (13096745 @ 7066)

ffprobe如何计算0.033333开始时间值?

在此文件中,视频轨道时基为1/30,没有编辑列表,并且第一个视频样本在cts表中的偏移量为1。因此,第一个视频样本的pts是dts (0) + ctts(1) = 1,单位是TB,在绝对时间内是1 * 1/30 = 0.03333。没有帧具有更早的pts,所以这是轨道开始时间。

最新更新