Mp4视频中奇怪的NTSC帧时间戳

时间:2019-11-21 11:58:01

标签: video mp4 mediacodec ntsc

我正在调查在Android Samsung平板电脑上拍摄的mp4视频。我已经使用MediaCodec和MediaExtractor来获得有关它的一些详细信息,并发现了一些对我来说没有意义的有趣的东西。 NTSC视频似乎为1080p / 29.97fps。我列出了帧列表以及MediaExtractor.SampleTime信息。这是列表:

0-KEY timestamp: 0
1- timestamp: 36711  diff:36711
2- timestamp: 70022  diff:33311
3- timestamp: 103322  diff:33300
4- timestamp: 136655  diff:33333
5- timestamp: 169955  diff:33300
6- timestamp: 203300  diff:33345
7- timestamp: 236588  diff:33288
8- timestamp: 269955  diff:33367
9- timestamp: 303244  diff:33289
10- timestamp: 336577  diff:33333
11- timestamp: 369855  diff:33278
12- timestamp: 403166  diff:33311
13- timestamp: 436511  diff:33345
14- timestamp: 469800  diff:33289
15- timestamp: 503111  diff:33311
16- timestamp: 536477  diff:33366
17- timestamp: 569733  diff:33256
18- timestamp: 603055  diff:33322
19- timestamp: 636388  diff:33333
20- timestamp: 669700  diff:33312
21- timestamp: 703000  diff:33300
22- timestamp: 736311  diff:33311
23- timestamp: 769633  diff:33322
24- timestamp: 802944  diff:33311
25- timestamp: 836311  diff:33367
26- timestamp: 869577  diff:33266
27- timestamp: 902933  diff:33356
28- timestamp: 936211  diff:33278
29- timestamp: 969522  diff:33311
30-KEY timestamp: 1002833  diff:33311

有趣的事实是帧的持续时间变化超出我的预期。我以为持续时间应该是1 /(30/1001)毫秒〜33.366ms。 但是我可以看到,例如第一帧是〜36.711ms。对我而言,更有趣的是第30个帧(从零开始)始于1.002833秒。
不是应该从1.001秒开始吗? 有人可以推荐我一些有关数字形式的NTSC视频的文章吗?我是否错过了重要的内容,或者示例中的时间戳不符合标准?
最初,我在考虑是否能够计算要跳过的多个帧中寻找的流时间。假设我要跳过mp4流的27帧。我应该寻求什么时间?最后我查看了帧列表,想知道发生了什么事:)

2 个答案:

答案 0 :(得分:1)

您的思考过程已经开始,但您缺少一件事。大多数软件糟透了。您的意思是对的,但是无论谁编写了生成mp4的软件,都不会在乎,也不知道如何正确打包文件。可悲的是,大多数野外的视频文件都是这样的。

尝试平均所有持续时间,它可能真的接近30000/1001

答案 1 :(得分:0)

感谢大家的回复,我深表歉意,我得到的信息是29.97,但是在有机会观看另一个相同类型的视频后,我发现这肯定是一个可变帧率视频。 (第二个视频的一帧时长为466333us)
无论如何,由于它是实时捕获的视频(不是静态图片或类似内容的演示),所以我看不出帧时长为何如此t以固定帧速率的倍数变化。例如,例如frame0 = 33.366ms和frame1 = 66.732(33.366 * 2)。
想知道将这些视频转换为不同的帧率格式(例如23/24/25 / 29.97 :)多么容易